对于自动化测试框架的总结
一.什么是自动化?
就是借助工具(程序)的方式代替或取辅助手工测试,包括性能测试工具(jmeter)
通工具记录或编写脚本的方式模拟手工测试的过程,通过回放或运行脚本来执行测试用例,从而代替人工对系统的功能进行验证。
二.Web自动化测试
什么是web自动化测试?
就是网页自动化测试。通过软件对web对象进行输入数据,单击等操作,比较预结果和实际结果,包括测试报告。
Web自动化测试工具
Selenium可以说是测试WEB最全面的开源自动化工具,用 Python,Java,C#等编程语言进行构建。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。
Webdriver是GOOGLE 正在用的自动化测试软件,基于Selenium的一个自动化测试类库。
三.单元测试框架
目前只学习了python这一种语言
python常见单元测试框架包括unittest, pytest
3.1unittest
unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果。
unittest是python内置库,不需要单独安装
unittest有四个属性,分别如下:
1.Test Case:测试用例
2.TestSuite:创建测试套件的。
3.TestRunner:测试的执行
4.Test Fixture:搭建和销毁测试用例环境
使用unittest编写用例,必须遵守以下规则:
1.测试文件必须先import unittest
2.测试类必须继承unittest.TestCase
3.测试方法必须以“test_”开头
断言:
assertEqual、assertIn、assertTrue、assertFalse.
参数化:
unittest使用ddt数据驱动
下面是用unittest框架执行web登录的测试案例代码,结合了日志:
1 import unittest 2 from selenium import webdriver 3 from _ui.ceshikuangjai.PageObject import login_page 4 from _ui.ceshikuangjai.PageObject import login_succes_page 5 from _ui.ceshikuangjai.common.basic import Basic 6 from ddt import ddt,data,unpack 7 8 9 test_data=[('13384009455','123456','tang11')] 10 test_data1=[('13384009455','546789','用户名或密码错误')] 11 #测试用例 12 #操作步骤,预期结果,实际结果 13 @ddt 14 class Test_Login(unittest.TestCase): 15 def setUp(self): 16 self.driver=webdriver.Chrome() 17 self.driver.get('http://119.23.55.123:8084/fsmarket/user.php') 18 self.log=Basic(self.driver).get_log() 19 @data(*test_data) 20 @unpack 21 def test_login(self,uname,pwd,ex): 22 self.log.info('开始进行登录界面的正常流测试') 23 login_page.LoginPage( self.driver).login(uname,pwd) 24 result = login_succes_page.NextPage(self.driver).check_uname() 25 ex = ex 26 assert result == ex 27 if result==ex: 28 self.log.info('预期结果{}与实际结果{}一致'.format(result,ex)) 29 else: 30 print('预期结果{}与实际结果{}不一致'.format(result,ex)) 31 32 @data(*test_data1) 33 @unpack 34 def test_loginpwd_error(self,uname,pwd,ex): 35 login_page.LoginPage(self.driver).login(uname,pwd) 36 result=login_succes_page.NextPage(self.driver).cuowu() 37 ex=ex 38 assert result==ex 39 if result==ex: 40 print('预期结果{}与实际结果{}一致'.format(result,ex)) 41 else: 42 print('预期结果{}与实际结果{}不一致'.format(result,ex))
3.2pytest
pytest是一个非常成熟的全功能的Python测试框架,主要有以下几个特点:
简单灵活,容易上手
支持参数化
能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appnium等自动化测试、接口自动化测试(pytest+requests)
pytest不是python内置库,需要单独安装
pytest编写用例,必须遵守以下规则:
1.测试文件名必须以“test_”开头或者"test"结尾(如:test_ab.py)
2.测试方法必须以“test”开头。
3.测试类命名以"Test"开头。
断言:
直接使用assert 表达式
参数化:
使用@pytest.mark.parametrize装饰器
下面是用pytest框架执行web登录的测试案例代码:
1 import os 2 from selenium import webdriver 3 from py_kuangjia_test.ceshikuangjai.PageObject import login_page 4 from py_kuangjia_test.ceshikuangjai.PageObject import login_succes_page 5 import pytest 6 7 testdata=[('13384009455','123456','tang11')] 8 testdata1=[('13384009455','546789','用户名或密码错误')] 9 #测试用例 10 #操作步骤,预期结果,实际结果 11 12 class Test_Login(): 13 @pytest.fixture() 14 def setUp(self): 15 self.driver = webdriver.Chrome() 16 self.driver.get('http://119.23.55.123:8084/fsmarket/user.php') 17 yield 18 @pytest.mark.usefixtures('setUp') 19 @pytest.mark.parametrize("uname,pwd,ex",testdata) 20 def test_login(self,uname,pwd,ex): 21 login_page.LoginPage(self.driver).login(uname,pwd) 22 result = login_succes_page.NextPage(self.driver).check_uname() 23 ex=ex 24 try: 25 assert result in ex 26 print('预期结果{}与实际结果{}一致'.format(result,ex)) 27 except Exception: 28 print('预期结果{}与实际结果{}不一致'.format(result,ex)) 29 30 @pytest.mark.usefixtures('setUp') 31 @pytest.mark.parametrize("uname,pwd,ex", testdata1) 32 def test_loginpwd_error(self,uname,pwd,ex): 33 login_page.LoginPage(self.driver).login(uname,pwd) 34 result=login_succes_page.NextPage(self.driver).cuowu() 35 ex = ex 36 assert result in ex 37 try: 38 assert result in ex 39 print('预期结果{}与实际结果{}一致'.format(result, ex)) 40 except Exception: 41 print('预期结果{}与实际结果{}不一致'.format(result, ex)) 42 43 if __name__ =="__main__": 44 # 执行pytest单元测试,生成 Allure 报告需要的数据存在 report 目录 45 pytest.main(['login_test.py','--alluredir', '/report']) 46 # 执行命令 allure generate ,生成测试报告 47 os.system('allure generate report --clean')
下面是我做的web的一些小的总结
作者:小汤o