🔥 交流讨论:欢迎加入我们一起学习!
🔥 资源分享:耗时200+小时精选的「软件测试」资料包
🔥 教程推荐:火遍全网的《软件测试》教程
📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
在进行UI自动化测试的时候,我们需要工具来对测试用例进行收集,执行,标记,参数化。pytest就是这样一个工具。
pytest实际是python的一个单元测试框架,其他还有如unittest等,它可以实现按照规则搜索测试用例,对测试用例进行标记,如只执行L1
级别的测试用例,测试执行用例失败后重新执行,测试用例的参数化等。
pytest不仅适用于UI自动化测试,也适用于接口自动化,对python语言进行单元测试等。
安装pytest
可以使用pip或者pycharm方式进行安装
打开pycharm,左上角File-settings-project:项目名-python interpreter,点击+,搜索pytest,然后install package
第一个pytest脚本
import pytest
class TestDemo:
def test_01(self):
assert 1==1 # 断言成功
def test_02(self):
assert 1==2 # 断言失败
if __name__ == '__main__':
pytest.main(['-s','test.py'])
在文件输入如上代码。
在这个脚本中,我们首先导入了pytest模块,然后定义了一个class,并定义了两个方法,在方法里用assert进行断言。
assert是python自带的关键字。assert后面接一个表达式,只要表达式的最终结果为True,那么断言通过,用例执行成功,否则用例执行失败。可以看出,第一个方法里结果为true,第二个方法里结果为false。
在main主入口里,调用pytest的main方法,并传入模块名(即文件名)。
点击运行按钮,结果如下:
由结果可以看出,一共收集了两个用例,其中一个运行成功(用.表示),一个运行失败(F表示),失败的原因是1!=2
用例收集规则
pytest按照一定的规则进行用例的收集。
1. 模块名必须以test_开头或_test结尾
这里适用于未指定模块时的收集,如果运行单个文件,在main里指定要执行的文件,则无论这个文件名是什么,都会被执行。
如果在main里不指定模块,如只写pytest.main(),则pytest会默认从当前路径及其所有子目录中搜索py源文件,所有名字以test_开头或者以_test结尾的python源文件(.py文件)被认为是测试模块源文件,不符合这个命名规则的文件会被忽略。
2. 测试类必须以Test开头且不能有init方法