精华内容
下载资源
问答
  • java自动化测试框架

    2018-09-20 21:18:27
    java自动化测试框架
  • 合资企业 使用Page对象模型的Java自动化测试框架。 该项目包括3个模块: 自动化网络测试 自动化Cucumber测试 自动化核心
  • 自动化测试领域内流传着一个说法:单元测试才是自动化测试的核心,在自动化测试里,无论框架何等完美都不可能脱离单元测试,单元测试将会是自动化测试里最小的单位,把它看作单位一,若干个单位一组成了一个整体,...

    自动化测试含义

    在自动化测试领域内流传着一个说法:单元测试才是自动化测试的核心,在自动化测试里,无论框架何等完美都不可能脱离单元测试,单元测试将会是自动化测试里最小的单位,把它看作单位一,若干个单位一组成了一个整体,它就成了自动化测试;

    诸如Python的单元测试框架Unittest、Pytest;Java的单元测试框架TestNG、Junit都为自动化测试提供并承担了决定性的支持,如何做好单位一,是一个合格的自动化测试工程师所必备的技能

    结构说明

    在这里插入图片描述

    • Util:工具类包:包含操作浏览器的常规事件、键盘及鼠标事件的模拟、文件的解析等,不区分平台皆可使用的公共的工具类
    • PageObject:页面对象包:以每一个页面为单位,封装该页面内所有需要控制的控件,通过页面控件的定位将其封装成对象,然后操作该对象实现自动化操作
    • AppModules:公共应用模块包:在产品的业务流程中,常有中间过程,公共流程,例如登陆、例如导航,将其独立封装,而非在脚本中重复编写
    • PropertyFiles:属性文件包:自动化框架必须实现的一点,页面元素独立,配置信息独立,从而达到更高的可维护性,页面的变动对整体代码影响降到最低
    • TestScripts:测试脚本包:以TestNG作为支撑,单纯的测试脚本
    • TestData:测试数据包:自动化框架必须实现的一点,测试数据独立,根据实际测试内容的需要可以将测试数据存放在文件里,可以是excel、yaml、json等,而Util包里提供解析测试数据文件的工具类实现对的读取写入,在测试数据量少的情况下,则可直接使用TestNG的DataProvider实现测试数据的组织形式
    • Constants:常量包:用于定义一些配置信息如文件路径、SQL语句、连数据库信息等以供代码直接调用

    每一款产品都有不同的特性,例如针对我们平台来说,它提供大量的服务及应用相关内容,这些内容并非单纯的UI自动化可测的,因此我们在Util里单独为服务验证提供方法用于验证Mysql、MongoDB、Redis、ElasticSearch、PostGreSQL、Neo4j、Kafka、RabbitMQ等服务在UI自动化执行后对服务可用性进行补充验证。

    编码规则及样例

    任何一家公司的自动化框架都应该有一定的规约,当自动化工程师进进出出团队,难免变法风格及相关工作存在一定的差异。

    那么自动化团队的编码规约应该从哪写方面进行规范呢?

    • 命名风格规约
    • 常量定义规约
    • 代码格式规约
    • 控制语句规约
    • 注释规约
    • 元素定位规约
    • 页面元素封装规约
    • 自动化测试脚本规约
    • 工具类封装规约
    • 公用应用类封装规约

    使用自动化测试框架的优势

    为什么要使用自动化测试框架,实际上很多已经从事了自动化测试的人或者刚刚迈进门槛的人都会问这个问题。

    明明一个文件就能编写用例并执行,为什么要费那么大力气弄框架,为什么要使用它?

    我在从事了很多年自动化测试工作后一度非常厌倦,我们常常会吐槽的点大概就是:为什么PO又要对页面进行优化、为什么前端代码如此的不规范、为什么需求又变了等等

    一个产品的自动化用例量可能有几千几万甚至更多,一旦页面发生变化就可能导致我们的用例因为定位不到页面元素而执行失败或者断言失败,如此我们修改自动化代码的代价就是不可估量的,代码的可维护性无法保障

    同样的道理,测试输入,我们的测试数据也尽可能不要出现在测试代码中,从而方便维护和扩展

    在一个产品内的思考:公共方法类的封装,例如一个产品的业务逻辑会出现很多公共的且绕不过去的部分,比如登陆、比如导航,我们不可能每个用例都去编写或复制一遍它,因此自动化框架也将这公共部分单独封装以供调用

    再有一个很重要的考虑层面是,我们决定做一个新的产品,也要上自动化测试,那么原有的自动化测试中是否有直接迁移的部分,以便我们新的团队不用从0做起

    因此我们还要合理的封装一些通用的不依赖产品本身的API,例如鼠标操作、键盘操作、浏览器控制、文件解析、报告类、日志类等等

    好的自动化框架什么样

    其一 必须做到页面元素与实际测试代码分离

    其二 必须做到测试数据与实际测试代码分离

    其三 必须将公共方法独立封装不可依赖于产品

    其四 必须尽可能封装产品内的公共模块以供调用

    自动化测试框架的目标一定是为自动化测试工程师服务的,让他们能够快速构建测试代码,并且框架必须是松耦合的从而使它可维护可扩展

    展开全文
  • 主要介绍了java接口自动化测试框架及断言详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 主要介绍了Java接口自动化测试框架设计 Get请求方法和测试,框架设计我们只是介绍基本的组件,而且框架设计没有想象那么难,一步一步跟着做就会了。这篇我们来演示,如果通过Java代码来实现一个用纯代码实现Http中的...
  • Java接口自动化测试框架设计-2-Get请求方法和测试.pdf
  • keywordsFramework 基于java的关键字自动化测试框架
  • Java接口自动化测试框架设计-4-POST请求方法封装过程和测试.pdf
  • 这个接口自动化测试框架到目前为止,我们已经完成了Get请求的封装和必要的工具类的支持。...所以,这个Java接口自动化测试框架的核心就是Get和POST请求方法的封装过程。 1.POST接口举例浏览器打开https://re...

           这个接口自动化测试框架到目前为止,我们已经完成了Get请求的封装和必要的工具类的支持。接下来这篇,我来介绍如何完成POST请求的封装过程。一般来说,在一个项目中,接口测试很多时候就是测试Get和POST方法,其他的请求方式的接口很少,占的比重几乎不计。所以,这个Java接口自动化测试框架的核心就是Get和POST请求方法的封装过程。

     

    1.POST接口举例

    浏览器打开https://reqres.in/,下拉一屏。点击第一个POST请求,这个接口的介绍信息如下。

          这个接口的作用是创建用户,参数是一个json类型的数据,一个name一个job,两个JSON对象。发送请求之后,返回的JSON数据有name和job和id,以及创建时间这几个数据。

     

    2.Postman手动实现

     

    我们先在本地postman环境,先来手动测试实现下这个post接口的请求过程。

    这个post接口请求还是比较简单,很容易在postman上实现该请求。

     

    3.Java代码自动化实现

     

           我们已经可以正确地在postman上实现创建用户这个接口的手动测试,那么我们想要这个过程自动化实现,如何做呢。下面我在RestClient.java封装了两个方法,一个是带请求头信息的Get请求,一个是带请求头信息的POST请求方法。这篇,了解了POST请求方法,带请求头的Get方法封装就很好理解。

    package com.qa.restclient;
    
    import java.io.IOException;
    import java.util.HashMap;
    import java.util.Map;
    
    import org.apache.http.client.ClientProtocolException;
    import org.apache.http.client.methods.CloseableHttpResponse;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.entity.StringEntity;
    import org.apache.http.impl.client.CloseableHttpClient;
    import org.apache.http.impl.client.HttpClients;
    
    public class RestClient {
        
        
        //1. Get 请求方法
        public CloseableHttpResponse get(String url) throws ClientProtocolException, IOException {
            
            //创建一个可关闭的HttpClient对象
            CloseableHttpClient httpclient = HttpClients.createDefault();
            //创建一个HttpGet的请求对象
            HttpGet httpget = new HttpGet(url);
            //执行请求,相当于postman上点击发送按钮,然后赋值给HttpResponse对象接收
            CloseableHttpResponse httpResponse = httpclient.execute(httpget);
            
            return httpResponse;
        }
        
        //2. Get 请求方法(带请求头信息)
        public CloseableHttpResponse get(String url,HashMap<String,String> headermap) throws ClientProtocolException, IOException {
                
            //创建一个可关闭的HttpClient对象
            CloseableHttpClient httpclient = HttpClients.createDefault();
            //创建一个HttpGet的请求对象
            HttpGet httpget = new HttpGet(url);
            //加载请求头到httpget对象
            for(Map.Entry<String, String> entry : headermap.entrySet()) {
                httpget.addHeader(entry.getKey(), entry.getValue());
            }
            //执行请求,相当于postman上点击发送按钮,然后赋值给HttpResponse对象接收
            CloseableHttpResponse httpResponse = httpclient.execute(httpget);
                
            return httpResponse;
        }
        
        //3. POST方法
        public CloseableHttpResponse post(String url, String entityString, HashMap<String,String> headermap) throws ClientProtocolException, IOException {
            //创建一个可关闭的HttpClient对象
            CloseableHttpClient httpclient = HttpClients.createDefault();
            //创建一个HttpPost的请求对象
            HttpPost httppost = new HttpPost(url);
            //设置payload
            httppost.setEntity(new StringEntity(entityString));
            
            //加载请求头到httppost对象
            for(Map.Entry<String, String> entry : headermap.entrySet()) {
                httppost.addHeader(entry.getKey(), entry.getValue());
            }
            //发送post请求
            CloseableHttpResponse httpResponse = httpclient.execute(httppost);
            return httpResponse;
        }
        
        
    }
    
    
    

          然后,我们需要写一个TestNG测试用例来测试下这个封装的post方法好不好用。由于我们去前面几篇文章介绍了TestNG测试get方法的代码,这里我们就直接拷贝和修改部分代码就行。

          在写测试用例之前,我们需要提前准备好json数据,一般来说,在Java中JSON数据都是放在JAVA Bean类中,通过JSON把高级对象序列化成JSON对象。

          在src/main/java中新建包:com.qa.data,然后新建一个Users.java,这个命名就参考接口的url单词就行。在postman或者网站该post方法,我们知道,需要name和job这两个json对象。我们新建一个bean类,同alt+shift+s,然后选择生成构造方法和set和get方法。

    package com.qa.data;
    
    public class Users {
    
    	private String name;
    	private String job;
    	
    	public Users() {
    		super();
    	}
    
    	public Users(String name, String job) {
    		super();
    		this.name = name;
    		this.job = job;
    	}
    
    	public String getName() {
    		return name;
    	}
    
    	public void setName(String name) {
    		this.name = name;
    	}
    
    	public String getJob() {
    		return job;
    	}
    
    	public void setJob(String job) {
    		this.job = job;
    	}
    	
    }
    

         好了,在src/test/java下的com.qa.tests我们新建一个POST测试用例,现在我们的TestNG测试类代码如下:

    package com.qa.tests;
    
    import java.io.IOException;
    import java.util.HashMap;
    
    import org.apache.http.client.ClientProtocolException;
    import org.apache.http.client.methods.CloseableHttpResponse;
    import org.apache.http.util.EntityUtils;
    import org.testng.Assert;
    import org.testng.annotations.BeforeClass;
    import org.testng.annotations.Test;
    
    import com.alibaba.fastjson.JSON;
    import com.alibaba.fastjson.JSONObject;
    import com.qa.base.TestBase;
    import com.qa.data.Users;
    import com.qa.restclient.RestClient;
    import com.qa.util.TestUtil;
    
    public class PostApiTest extends TestBase {
    	TestBase testBase;
    	String host;
    	String url;
    	RestClient restClient;
    	CloseableHttpResponse closeableHttpResponse;
    	
    	
    	@BeforeClass
    	public void setUp() {
    		testBase = new TestBase();
    		host = prop.getProperty("HOST");
    		url = host + "/api/users";
    		
    	}
    	
    	@Test
    	public void postApiTest() throws ClientProtocolException, IOException {
    		restClient = new RestClient();
    		//准备请求头信息
    		HashMap<String,String> headermap = new HashMap<String,String>();
    		headermap.put("Content-Type", "application/json"); //这个在postman中可以查询到
    		
    		//对象转换成Json字符串
    		Users user = new Users("Anthony","tester");
    		String userJsonString = JSON.toJSONString(user);
    		//System.out.println(userJsonString);
    		
    		closeableHttpResponse = restClient.post(url, userJsonString, headermap);
    		
    		//验证状态码是不是200
    		int statusCode = closeableHttpResponse.getStatusLine().getStatusCode();
    		Assert.assertEquals(statusCode, RESPNSE_STATUS_CODE_201,"status code is not 201");
    		
    		//断言响应json内容中name和job是不是期待结果
    		String responseString = EntityUtils.toString(closeableHttpResponse.getEntity());
    		JSONObject responseJson = JSON.parseObject(responseString);
    		//System.out.println(responseString);
    		String name = TestUtil.getValueByJPath(responseJson, "name");
    		String job = TestUtil.getValueByJPath(responseJson, "job");
    		Assert.assertEquals(name, "Anthony","name is not same");
    		Assert.assertEquals(job, "tester","job is not same");
    		
    	}
    
    }
    

          建议,在写测试用例过程中,需要和postman上的请求结果参考,特别是Headers这里的键值对。这里留一个作业,上面我写了一个Get带请求头的封装方法,你可以对照postman中的请求头去写一个单元测试用例去测试下这个带headers的Get方法。

           目前,Java接口自动化测试框架的核心部分,http请求方法的封装已经完成。接下里还有测试日志,测试报告,或者其他需要抽取优化的模块去完成。




    展开全文
  • java+selenium+maven+testng自动化测试框架实例(实际项目) java+selenium+maven+testng自动化测试框架实例(实际项目) java+selenium+maven+testng自动化测试框架实例(实际项目)
  • Java接口自动化测试框架设计-1-开发环境的搭建.pdf
  • Java接口自动化测试框架设计-2-Get请求方法和测试

    万次阅读 多人点赞 2018-05-22 00:11:42
    这篇开始,我来介绍通过代码逐步实现接口自动化测试框架的设计过程。先不要着急,框架设计我们只是介绍基本的组件,而且框架设计没有想象那么难,一步一步跟着做就会了。这篇我们来演示,如果通过Java代码来实现一个...

          这篇开始,我来介绍通过代码逐步实现接口自动化测试框架的设计过程。先不要着急,框架设计我们只是介绍基本的组件,而且框架设计没有想象那么难,一步一步跟着做就会了。这篇我们来演示,如果通过Java代码来实现一个用纯代码实现Http中的Get请求过程。

     

    1.Get请求API举例

          浏览器打开网址https://reqres.in,然后下拉一屏,我们就可以看到这个网站的API举例,我们来看看显示用户的get接口。


    通过这个图,我们能够获取这些信息

    1)网站host地址:https://reqres.in/

    2)用户展示请求方式是: Get

    3)接口的url 是: /api/users

    4)接口的响应状态码是200,还可以看到响应body的JSON内容。

     

           获取上面这些接口信息之后,我们在本地postman上来测试一下,如果没有postman请安装一个和postman差不多的能做接口手工测试的图形化界面工具,例如jmeter等。


          这个接口,我们通过postman手动测试,发现和网站提供的是一样结果,说明这get请求的接口测试通过。那么如果我们想通过Java代码实现,需要怎么做呢?接下来,才是本篇的重点内容。

     

    2.代码过程

          前面一篇文章,我们介绍了基础环境的搭建过程,这里,接着前面的环境来逐步完成一个Get请求的设计和测试过程。

    2.1 设计配置文件

          我们这个序列是要教会大家设计接口自动化测试框架的目的,所以我们一些设计和组织项目结构的方式,需要参考框架的思维。写一个配置文件,很简单,意义就是方便测试多套环境下的接口测试。我们工作中,一个项目,分测试环境,预发布环境和线上生产环境,这三套环境,接口肯定是一样,只不过服务器地址不同,所以,我们框架设计需要支持写一套接口测试用例,在三套环境上可以跑得同。

        在src/main/java下新建一个包:com.qa.config,然后在新包下新建一个config.properties文件,文件内容如下

          然后在src/main/java下新建一个包:com.qa.base,新建一个TestBase.java,这个类作为所有接口请求测试的父类,都需要继承这个父类,目前我们就写一个构造方法,实现加载读取properties文件。

    TestBase.java 代码如下:

    package com.qa.base;
    
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.util.Properties;
    
    public class TestBase {
    	
    	public Properties prop;
    	
    	//写一个构造函数
    	public TestBase() {
    		
    		try {
    			prop = new Properties();
    			FileInputStream fis = new FileInputStream(System.getProperty("user.dir")+
     "/src/main/java/com/qa/config/config.properties");
    			prop.load(fis);
    		} catch (FileNotFoundException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    		
    	}
    	
    	
    }
    

          这里来复习下构造函数的作用,上面我们把加载配置文件的代码写在空参构造里,好处就是,每初始化这个类的对象就会执行构造函数的代码,即执行读取配置文件这么一个作用。关于上面配置文件路径是否拼接正确,你可以新建一个main方法的类,执行打印语句:System.out.println(System.getProperty("user.dir"));

    目前,项目结构图如下

    2.2 Get请求方法代码实现

          在src/main/java下新建一个包:com.qa.restclient,然后新建一个RestClient.java文件,下面是具体代码,实现了get请求,和得到相应状态码和响应头信息,以及响应主体的json内容。

    package com.qa.restclient;
    
    import java.io.IOException;
    import java.util.HashMap;
    import org.apache.http.Header;
    import org.apache.http.client.ClientProtocolException;
    import org.apache.http.client.methods.CloseableHttpResponse;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.impl.client.CloseableHttpClient;
    import org.apache.http.impl.client.HttpClients;
    import org.apache.http.util.EntityUtils;
    
    import com.alibaba.fastjson.JSON;
    import com.alibaba.fastjson.JSONObject;
    
    public class RestClient {
    	
    	
    	//1. Get 请求方法
    	public void get(String url) throws ClientProtocolException, IOException {
    		
    		//创建一个可关闭的HttpClient对象
    		CloseableHttpClient httpclient = HttpClients.createDefault();
    		//创建一个HttpGet的请求对象
    		HttpGet httpget = new HttpGet(url);
    		//执行请求,相当于postman上点击发送按钮,然后赋值给HttpResponse对象接收
    		CloseableHttpResponse httpResponse = httpclient.execute(httpget);
    		
    		//拿到Http响应状态码,例如和200,404,500去比较
    		int responseStatusCode = httpResponse.getStatusLine().getStatusCode();
    		System.out.println("response status code -->"+responseStatusCode);
    		
    		//把响应内容存储在字符串对象
    		String responseString = EntityUtils.toString(httpResponse.getEntity(),"UTF-8");
    		
    		//创建Json对象,把上面字符串序列化成Json对象
    		JSONObject responseJson = JSON.parseObject(responseString);
    		System.out.println("respon json from API-->" + responseJson);
    		
    		//获取响应头信息,返回是一个数组
    		Header[] headerArray = httpResponse.getAllHeaders();
    		//创建一个hashmap对象,通过postman可以看到请求响应头信息都是Key和value得形式,所以我们想起了HashMap
    		HashMap<String, String> hm = new HashMap<String, String>();
    		//增强for循环遍历headerArray数组,依次把元素添加到hashmap集合
    		for(Header header : headerArray) {
    			hm.put(header.getName(), header.getValue());
    		}
    		
    		//打印hashmap
    		System.out.println("response headers -->"+ hm);
    		
    	}
    
    }
    

          上面的get方法代码写得比较乱,需要认真看注释,不然层次不清晰。这段代码肯定需要以后重构的,我们刚开始,方便我们测试就先这样去写就好。目前,项目结构图如下

    2.3 TestNG用例测试Get方法

          在src/test/java下新建一个包:com.qa.tests,然后新建一个GetApiTest.java类,写一个TestNG的测试用例来测试下我们上面写的Get请求方法。

    package com.qa.tests;
    
    import java.io.IOException;
    
    import org.apache.http.client.ClientProtocolException;
    import org.testng.annotations.BeforeClass;
    import org.testng.annotations.Test;
    
    import com.qa.base.TestBase;
    import com.qa.restclient.RestClient;
    
    public class GetApiTest extends TestBase{
    	TestBase testBase;
    	String host;
    	String url;
    	RestClient restClient;
    	
    	
    	@BeforeClass
    	public void setUp() {
    		testBase = new TestBase();
    		host = prop.getProperty("HOST");
    		url = host + "/api/users";
    		
    	}
    	
    	@Test
    	public void getAPITest() throws ClientProtocolException, IOException {
    		restClient = new RestClient();
    		restClient.get(url);
    	}
    }
    

    选择run as testng,运行,输出结果如下:

    [RemoteTestNG] detected TestNG version 6.14.3
    response status code -->200
    respon json from API-->{"per_page":3,"total":12,"data":[{"last_name":"Bluth","id":1,"avatar":"https://s3.amazonaws.com/uifaces/faces/twitter/calebogden/128.jpg","first_name":"George"},{"last_name":"Weaver","id":2,"avatar":"https://s3.amazonaws.com/uifaces/faces/twitter/josephstein/128.jpg","first_name":"Janet"},{"last_name":"Wong","id":3,"avatar":"https://s3.amazonaws.com/uifaces/faces/twitter/olegpogodaev/128.jpg","first_name":"Emma"}],"page":1,"total_pages":4}
    response headers -->{Transfer-Encoding=chunked, Server=cloudflare, CF-RAY=41e822894b39336d-HKG, Access-Control-Allow-Origin=*, ETag=W/"1bb-D+c3sZ5g5u/nmLPQRl1uVo2heAo", Connection=keep-alive, Set-Cookie=__cfduid=d9d93dc43c046707f916670ef491f4c8e1526917157; expires=Tue, 21-May-19 15:39:17 GMT; path=/; domain=.reqres.in; HttpOnly, Date=Mon, 21 May 2018 15:39:17 GMT, Content-Type=application/json; charset=utf-8, X-Powered-By=Express, Expect-CT=max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"}
    PASSED: getAPITest
    

    接下来,我们把响应内容的的bodyjson内容拷贝到一个在线的Josn格式化显示网站(https://www.json.cn/),看看效果如下。

          这个结果和postman上一样,数据都对得上,本篇关于Java代码基于Httpclient开源库实现Get请求的过程就介绍到这里。




    展开全文
  • wtd自动化测试框架支持以下功能: 接口自动化测试,只需简单的一个接口的xml文件即可 网页UI自动化测试,编写一个简单的java文件放在wtd框架中即可执行 测试结果报告保存,测试结果和错误原因及网页截图文件会保存在...
  • 接口测试框架 https://blog.csdn.net/qq_15283475/article/details/106494544 com.bjci.api #包名 ApiInfoModel.java ## Api类 ExcelUtills.java ##操作excel的类 HandlsUtils.java ##根据judge分发不同的...
  • Java接口自动化测试框架设计-5-PUT和Delete请求方法封装和测试.pdf
  • Java接口自动化测试框架设计-3-Get方法重构和JSON解析.pdf
  • TestNg JAVA 自动化单元测试框架Demo

    千次阅读 2015-06-30 16:23:09
    TestNg java 自动化测试
    1. TestNg
      TestNg 是java的一个自动化单元测试框架
      参考:http://testng.org/doc/index.html

    2. 环境准备
      既然是java 的自动化单元测试框架,就必须要有java的环境了,这里使用的编辑器是Eclipse,已经安装过TestNg 插件,如果环境准备好就可以开始了

    3. 代码实例
      代码结构如图
      这里写图片描述

      新建一个java项目,之后添加一个TestNg类,之后会生成一个测试类,和一个xml文件
      (如果发现TestNg编辑是出错,无法调用TestNg的标签函数,那么导入TestNg.jar.可以右键点击项目,之后BuildPath ->add Libary->选择TestNg 即可)
      这里写图片描述



      简单地TestNg类

      package TestNgDemo;
      //使用TestNg 测试框架
      
      import org.testng.Assert;
      import org.testng.annotations.Test;
      import org.testng.annotations.BeforeClass;
      import org.testng.annotations.AfterClass;
      
      
      public class NewTest {
      
        //测试开始前执行一次
        @BeforeClass
        public void beforeClass() {
            System.out.println("开始前执行一次");
        }
      
        @Test
        public void case1() {
            System.out.println("case1");
        }
      
        @Test
        public void case2() {
            int a = 2;
            int b = 3;
            int sum = a+b;
            Assert.assertEquals(sum, 5, "Result Error");
            System.out.println("case2");
        }
      
        //测试结束时执行一次
        @AfterClass
        public void afterClass() {
            System.out.println("结束时执行一次");
        }
      
      }
      

      对应的Xml配置文件(TestNg 都是通过注释标签,有点类似Junit,并且通过xml文件托管):

      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
      <suite name="Suite" parallel="false">
        <test name="Test">
          <classes>
            <class name="TestNgDemo.NewTest"/>
          </classes>
        </test> <!-- Test -->
      </suite> <!-- Suite -->
      



      使用TestNg Xml 进行数据驱动传递参数

      package TestNgDemo;
      //使用TestNg 传递参数
      
      
      import org.testng.annotations.Parameters;
      import org.testng.annotations.Test;
      import org.testng.annotations.BeforeMethod;
      import org.testng.annotations.AfterMethod;
      
      public class NewTest2 {
      
          @BeforeMethod
          public void beforeMethod() {
              System.out.println("每个方法运行时运行");
          }
      
          //通过Parameters 获取Xml 中指定的参数
          @Parameters({"name","age"})
          @Test
          public void case1(String name,int age) {
      
              System.out.println("case1 Name is"+ name);
              System.out.println("case1 Age is"+ age);
      
          }
      
      
          @Test
          public void case2() {
      
              System.out.println("case2");
          }
      
      
      
          @AfterMethod
          public void afterMethod() {
              System.out.println("每个方法结束时运行");
          }
      
      }
      

      对应的xml如下:

      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
      <suite name="Suite" parallel="false">
      
          <parameter name="name" value="TestName" />
          <parameter name="age" value="55" />
      
        <test name="Test">
          <classes>
            <class name="TestNgDemo.NewTest2"/>
          </classes>
        </test> <!-- Test -->
      </suite> <!-- Suite -->



      通过xml设置分组,运行不同的case

      package TestNgDemo;
      //TestNg  分组运行
      
      import org.testng.annotations.AfterMethod;
      import org.testng.annotations.BeforeMethod;
      import org.testng.annotations.Parameters;
      import org.testng.annotations.Test;
      import org.testng.annotations.BeforeClass;
      import org.testng.annotations.AfterClass;
      
      public class NewTest3 {
      
          @BeforeMethod
          public void beforeMethod() {
              System.out.println("Begain");
          }
      
          @Parameters({"name","age"})
          @Test(groups="CaseGroup1")
          public void case1(String name,int age) {
      
              System.out.println("case1 Name is"+ name);
              System.out.println("case1 Age is"+ age);
      
          }
      
      
          @Test(groups="CaseGroup2")
          public void case2() {
      
              System.out.println("case2");
          }
      
      
      
          @AfterMethod
          public void afterMethod() {
              System.out.println("End");
          }
      
      }
      

      对应的xml文件如下,需要运行那个组的时候,就可以直接更改:

      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
      <suite name="Suite" parallel="false">
      
          <parameter name="name" value="TestName" />
          <parameter name="age" value="55" />
      
      
        <test name="Test">
      
      
        <grroup>
          <define name = CaseGroup1/>
          <define name = CaseGRoup2/>
      
          <run>
              <include name = CaseGroup1/>
          </run>
      
        </grroup>
          <classes>
            <class name="TestNgDemo.NewTest3"/>
          </classes>
        </test> <!-- Test -->
      </suite> <!-- Suite -->
      

    4. TestNg 是通过Xml文件管理测试累的,可以看到,每个测试方法都可以看做一条Case,并且开头都有@Test 作为测试标记
      更多的TestNg xml管理的例子可以参考:
      http://www.cnblogs.com/choosewang/articles/3079983.html
      TestNg 主要的就是通过Xml 托管,注释标签调用

    展开全文
  • 接口自动化测试框架

    2018-04-02 22:38:53
    搭建接口自动化测试框架 搭建接口自动化测试框架 搭建接口自动化测试框架 搭建接口自动化测试框架
  • Java+webdriver的自动化测试框架搭建

    千次阅读 2018-09-28 10:42:54
     webdriver是一种支持web应用程序自动化测试的工具,利用浏览器原生的API,封装成一套更加面向对象的selenium webdriver API,直接操作浏览器里的元素。除了必要的浏览器驱动外,webdriver不需要启动其他任何程序,...
  • 手把手教你搭建java接口自动化测试框架(三):基础代码填充 手把手教你搭建java接口自动化测试框架(三):基础代码填充 base包下新建TestBase.java package com.qa.base; import java.io.FileInputStream; ...
  • 这是一个WebUI自动化测试框架,由创办人土豆(本人技术笔名)所创建,该web自动化测试框架是用java语言编写的,基于selenium webdriver 的开源自动化测试框架,该框架结合了testng,selenium,webdriver,jxl,jodd-http ...
  • 手把手教你搭建java接口自动化测试框架(一):前期准备工作 本人也是接口自动化测试框架小白 最近跟着一些教程成功搭建了自己的接口自动化测试框架 该框架基于IDEA+TestNG+extentreport可完成基本的post、get请求 ...
  • Java接口自动化测试框架设计-1-开发环境的搭建

    万次阅读 多人点赞 2018-05-21 23:58:05
    废话不多说,刚开始,尽量详细,通过一步一步,手把手教会你搭建接口自动化测试的基础项目环境。 一.前提条件 我这里来一个约定,有以下前提条件。1.本机环境安装了maven并配置环境变量2.本机环境安装了Eclipse...
  • 【自动化测试】自动化测试框架与工具

    千次阅读 多人点赞 2021-05-06 21:01:01
    文章目录1)什么是自动化测试框架?1.1 什么是框架?1.2 什么是自动化测试框架?1.2.1 优点:1.2.2 框架的基本组件1、需要配置文件管理:2、业务逻辑代码和测试脚本分离3、报告和日志文件输出4、自定义的库的封装5、...
  • Java接口自动化测试框架学习(三)

    万次阅读 多人点赞 2018-09-14 16:53:32
    前面项目已创建好,依赖包添加完成,testng也已添加 项目结构如下: 1.设计配置文件 在src/main/java下新建一个包:...然后在src/main/java下新建一个包:com.qa.base,新建一个TestBase.java,这个...
  • 本文来自于个人微博,在这篇文章中,我们将介绍一下开源的Web-API自动化测试框架——Karate. 在这篇文章中,我们将介绍一下开源的Web-API自动化测试框架——Karate Karate是基于另一个BDD测试框架Cucumber来建立的,...
  • Web自动化测试框架搭建:内含自动化测试理念介绍及分层的自动化测试框架搭建,整个自动化测试采用CI管理
  • 今天来教大家一些关于java自动化测试TestNG相关的知识。大家来看看哦。 TestNG简介 TestNG官方的定义:TestNG是一个测试框架,其灵感来自JUnit和NUnit,但引入了一些新的功能,使其功能更强大,使用更方便。 TestNG...
  • wtd自动化测试框架支持以下功能: 接口自动化测试,只需简单的一个接口的xml文件即可 网页UI自动化测试,编写一个简单的java文件放在wtd框架中即可执行 测试结果报告保存,测试结果和错误原因及网页截图文件会保存在...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 223,463
精华内容 89,385
关键字:

java自动化测试框架

java 订阅