对于自动化测试框架的总结

一.什么是自动化?

就是借助工具(程序)的方式代替或取辅助手工测试,包括性能测试工具(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

posted @ 2020-07-11 16:19  小汤o  阅读(143)  评论(0编辑  收藏  举报