1、认识pytest框架
1、搭建自动化框架的思路与流程
1、搭建自动化测试框架的思路和流程,任意测试手段流程都是一致的:手工测试、自动化测试、工具测试
- 手工测试:熟悉业务 —— 写用例 —— 执行用例并记录结果 —— 生成测试报告
- 自动化测试:熟悉业务 —— 写自动化用例(来自于手工测试用例,格式转化为代码) —— 代码表达用例 —— 代码收集测试用例 —— 执行测试用例 —— 代码生成测试报告
2、测试框架(是一种技术栈):是一个现成的框架,区别于自动化测试框架(需要借助测试框架+基于项目实现搭建的针对项目的框架),介绍一下使用最多的2个框架:
- unittest:内置库,不需要安装,不能自动发现测试用例,手动收集用例
- pytest:第三方库,需要安装导入使用:智能自动收集所有用例,使用更广泛
- 安装: pip install pytest
- 导包:import pytest
3. unittest和pytest都是单元测试框架,都可以用来编写测试用例,运行用例,生成报告,实现测试前置和后置等
2、pytest语法
1、编写用例的2种规则(为了确保可以自动识别测试用例)
1、 使用函数格式编写时,函数名字以test_开头才会被识别为pytest测试用例的方法,不然就是普通的函数
2、 测试类的形式 编写测试用例,类名Test开头,类里面方法 test_开头,才会被识别为pytest测试用例的方法
注意:当pytest识别出这个是测试用例后,这个函数前方会有一个小绿三角,如下图所示:
如果没有小三角,可以这样做:File - setting - Tools - Python Integrated Tools - testing配置pytest
2、运行pytest用例
1、运行单个模块用例,右键运行,点击三角符号运行
2、完整项目框架里每个模块单独调用一个py文件管理,需要收集所有模块的用例,一起执行可以在项目的跟目录下创建一个main.py,会运行这个项目底下所有的用例,其原理是:不同模块,不同目录,主要符合命名规则的都会拿过来执行(范围:rootdir)
3、执行自动化测试用例
1、使用 pytest.main()执行所以用例
在项目最外层创建main.py文件,文件内容如下,它会自动在这个文件所在目录收集符合命名规则的文件,符合规则如下:
- 文件名字,以 test_开头、_test开头
- 用例名字:测试用例名字以 test开头,或者类以 Test开头 +test_开头的方法函数名字
注意:pytest用例执行搜索名字时,跟项目文件夹的名字无关
'''
main.py
'''
import pytest
pytest.main() # 收集所有符合pytest语法命名的测试用例
2、执行部分用例的方式
- 修改文件和用例方法的名称
- 指定目录和文件执行,加参数控制,例如:pytest.main([r"testcase\test_01_demo.py"])表示仅执行test_01_demo.py文件
- 加标签【类比手工测试用例的优先级: P1 P2 P3 P4 (important critical major) high medium low】, 加参数过滤用例
- 用例定义的加一个标签,pytest自带: 用装饰器形式:@pytest.mark.p2
- 执行的时候 加参数 -m 标签,如下举例:
class Testdemo:
@pytest.mark.p1 # 添加标记
def test_case02(self):
assert 1 == 10
@pytest.mark.p2 # 添加标记
assert 10 > gen_ran()
def test_case04(self):
assert 20 < gen_ran()
扩展
1、用例执行顺序是什么?
- 文件: 名字排序,ASCII顺序,0-9a-zA-Z
- 文件内部: 代码从上到下顺序执行
如果调整用例执行的顺序 按照规则调整即可。