网站做多长时间才会逐渐成功,网推平台,wordpress 首行缩进,一个网站项目开发流程关于接口测试, 我们之前介绍过很多方法了, 有postman, soapUI, Jmeter等, 他们各有优势和劣势, 今天和大家分享的是如何用java TestNG来实现接口测试.开始测试之前需要如下准备工作:1. IDE环境, Intellij 或者eclipse, 个人推荐使用Intellij.2. JKD1.8 以上3. Maven 环境 Maven…关于接口测试, 我们之前介绍过很多方法了, 有postman, soapUI, Jmeter等, 他们各有优势和劣势, 今天和大家分享的是如何用java TestNG来实现接口测试.开始测试之前需要如下准备工作:1. IDE环境, Intellij 或者eclipse, 个人推荐使用Intellij.2. JKD1.8 以上3. Maven 环境 Maven环境配置4. 被测接口(京东web版登录API)首先来看下jd 登录接口,chrome浏览器打开www.jd.com, 使用chrome开发者工具, Windows用户按键盘F12, 将tab切换到Network, 使用密码登录方式, 登录成功后, 我们就可以获取到登录接口了,如果无法获取,使用charles第三方工具也是妥妥的.看下我登录后开发者工具:接着在ide中创建项目, 我们选择maven来创建项目是不是非常的简单, 一步步都是next下去即可, Intellij就会帮你把maven项目创建好. 如果你的IDE里没有maven,也不用着急, 在菜单的Preference-plugs里可以添加所需插件在创建好的项目中, 我们首先进入pom.xml文件, 这是maven的配置文件4.0.0com.api.testtest1.0-SNAPSHOT这边需要添加相应的项目管理依赖包, 如testng等, 适个人情况添加所需的依赖包.UTF-8execShellorg.testngtestng7.0.0org.apache.poipoi3.10-FINALorg.jsoupjsoup1.9.1org.apache.httpcomponentshttpclient4.5.2org.apache.httpcomponentshttpmime4.5.2com.jcraftjsch0.1.54mysqlmysql-connector-java5.1.38commons-beanutilscommons-beanutils1.6commons-collectionscommons-collections3.1commons-loggingcommons-logging1.1net.sf.ezmorphezmorph1.0.6net.sf.json-libjson-lib2.4如果需要maven来帮你build项目也是可以的, 方法也是非常简单org.apache.maven.pluginsmaven-compiler-plugin88org.apache.maven.pluginsmaven-surefire-plugin2.19.111trueonce-Dfile.encodingUTF-8${groupsTest}**/*Test.java测试思路:以下示例中参数都来自于chrome开发者工具中捕获的信息, 因为被测接口是post方法,且在接口中声明了提交方式:Content-Type:application/x-www-form-urlencoded; charsetUTF-8所以在接口测试过程中, form data里的信息都要作为参数添加.完成以上内容就可以开始创建一个测试的java类, 在你的项目的/test/java下面创建 NewApiTest.javaimportorg.apache.http.HttpEntity;importorg.apache.http.NameValuePair;importorg.apache.http.client.entity.UrlEncodedFormEntity;importorg.apache.http.client.methods.CloseableHttpResponse;importorg.apache.http.client.methods.HttpPost;importorg.apache.http.impl.client.CloseableHttpClient;importorg.apache.http.impl.client.HttpClients;importorg.apache.http.message.BasicNameValuePair;importorg.apache.http.util.EntityUtils;importorg.testng.annotations.Test;importjava.io.IOException;importjava.util.ArrayList;importjava.util.List;/** auth:louiezhou* return: 测试数据* parame:**/public classNewApiTest {CloseableHttpResponse responsenull;String entityStr null;//登录urlString url https://passport.jd.com/uc/loginService?uuida25f6873-4dd9-4334-ad4c-b8e3fReturnUrlhttps%3A%2F%2Fwww.jd.com%2Fr0.8097302259069017version2015;Test(invocationCount 1, threadPoolSize 0)public void JdLoginTest() throwsIOException {//获取连接客户端工具CloseableHttpClient httpClientHttpClients.createDefault();//创建POST请求对象HttpPost httpPostnewHttpPost(url);//httpPost.addHeader post请求 headerhttpPost.addHeader(Content-Type,application/x-www-form-urlencoded; charsetUTF-8);httpPost.addHeader(User-Agent:,Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.36);//List headerList Lists.newArrayList();//headerList.add(new BasicHeader(HttpHeaders.CONTENT_TYPE,application/x-www-form-urlencoded; charsetUTF-8));//headerList.add(new BasicHeader(HttpHeaders.USER_AGENT,Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.36));//参数封装对象List paramsnew ArrayList();try{params.add(new BasicNameValuePair(uuid,a25f6873-4dd9-4334-ad4c-e6f8992b8e3f));params.add(new BasicNameValuePair(eid,BHM2GM3F6FVMTA3YNGT4JRDJBHAWFK7MSHDPF3SU4FHFSOLMBUP77TDQE5EB43BZPDT5J6PAQ6CFI));params.add(new BasicNameValuePair(fp,f0aef80fec848c0a78c823bd234));params.add(new BasicNameValuePair(loginType,c));params.add(new BasicNameValuePair(loginname,zhangsan));params.add(new BasicNameValuePair(nloginpwd,Y2nHBYQrhMS1/YvBscW8rrvbW1CYlmX61xfoLx7tgSpbgxZ8/HCgefeAXphJVmefDdN/3d3UQLnFiyl7GSkGjZQNU4pw9202NovcR6q9G/haGpNKp/5hXsJ7BrUfKXvkmdmKS0fIs7ly0KOY/BHKcYg));params.add(new BasicNameValuePair(authcode,107fdb562e32406cab356c3ff97));params.add(new BasicNameValuePair(pubKey,MIGfMA0GCSqGSIb3DQEgQDC7kw8r6tq43pwApYvkJ5laljaN9BZb21TAIfT/vexbobzH7Q8SUdP5uDPXEBKzOjx2L28y7Xs1d9v3tdPfKI2LR7PAzWBmDMn8riHrDDNpUpJnlAGUqJG9ooPn8j7YNpcxCa1iybOlc2kEhmJn5uwoanQqCA6agNkqly2H4j6wIDAQAB));params.add(new BasicNameValuePair(sa_token, B68C442BEF615E156C81EFA53D580517BB9357FB9516A01E25761124AE9AF7B3CFA3C38D38484A734CB58C286401C2DEC2A5DFF3C9E856280AF80D4851C9B0239587771E8DC06B46454644D4908F4DC165CB70D86EAC7276BFBE489FFE2324EDDC5F71043BFB99B3D6E238B1AE9E67C3F297E0993B8497B1287640777CF4FFBA52FF032510AD19D7F371541C798742CB4378E5DD2119BADE9078310468AF8436A2B88593A92EEAF16FCFD55CD7F121B58D7A9A833D74068FACC5A6D6D8C3D1A850245F0742DEEC12BACF0FF9D5853FFDF1B37AC6A5E676DC635896AFD884D0BBB8A490E57234DF65A76AF189908F4AB80AEA36E56F6DD110EF7D36D119BB77F0B65774780348FFE859A68D2E0B3A3CDDAFD1BEFCD401530D536C8EF68B618969FC2FFD658FE0BA7BC2E7250F9CCDBB8F9AF360FC293F294A7279EA70043E860784C2E2CF11181C44561794A32AADDB2AC37B1294C08E7B63C85E6561F138195ECCF28EA0F08FB5A16DB7A20814DD914FC0C8A12BF29FFC4F73DD39361EBA1A849BB25B9F5957589347E205573754EA468D809CCCA698BFAB16373516DC8F5FEE8A24C2306850D601D6827C161F1A83057E0F93A97A0C034E));params.add(new BasicNameValuePair(seqSid,31251240));params.add(new BasicNameValuePair(useSlideAuthCode,1));params.add(new BasicNameValuePair(_t,_t));//使用URL实体转换工具UrlEncodedFormEntity entityParam new UrlEncodedFormEntity(params, UTF-8);httpPost.setEntity(entityParam);//执行请求responsehttpClient.execute(httpPost);//获得响应的实体对象HttpEntity entityresponse.getEntity();//使用Apache提供的工具类进行转换成字符串int code response.getStatusLine().getStatusCode();System.out.println(StatusCode: code);Assert.assertEquals(200,code);entityStrEntityUtils.toString(entity,UTF-8);System.out.println(接口返回结果是:entityStr);}catch(Exception e){e.printStackTrace();}finally{//释放资源if(httpClient!null) {httpClient.close();}if (response!null){response.close();}}}}声明:1.示例使用testng, 因此必须在方法上添加Test符号,便于被识别到是测试代码块2.使用了java的httpclient, 它是一个客户端的http通讯实现库.HttpClient的目标是发送和接收HTTP 报文,不缓存内容, 重新格式化请求/重定向URI或者其它和 HTTP 运输无关的功能。3.使用了List 的实现类ArrayList来封装对象, ArrayList的优点是查询速度比较快.右键java文件, 选择run 即可执行, 让我们来看下执行结果:思考:这样一个接口测试就实现了, 但作为一名严格要求自我的资深测试工程师来说, 这样的设计合理吗? 是否满足数据和测试业务分离, 断言是否充足, 代码是否可以重用, 怎么去管理N多个测试用例, 怎么降低代码耦合度, 怎么进行多线程测试, 测试报告如何展示,如何自动构建, 诸多问题等待解决.请持续关注我, 和你分享更多精彩内容.Story:人要有一个奋斗目标这样活起来才有精神有奔头。整天无所事事、无聊至极的就是因为没有目标。从小就要为自己的人生制定一个目标然后不断地向它靠近终有一天你会达到这个目标。如果从小就糊里糊涂对自己的人生不负责任没有目标没有方向那这一生也难有作为。每个人出门都会有自己的目的地如果不知道自己要去哪里漫无目的地闲逛那速度就会很慢但当你清楚你自己要去的地方你的步履就会情不自禁地加快。如果你分辨不清自己所在的方位你会茫然若失一旦你弄清了自己要去的方向你会精神抖擞。这就是目