目录
一、环境部署
二、用例设计原则
三、判断用例执行结果的方法
四、yaml配置文件
五、常用的执行用例的方法
六、测试报告的生成
一、环境部署
首先Python环境是必须要装的,其次是pycharm和pytest库。其它可以按需要选择安装,后面可能会用到:
库/插件/工具
安装方法
用途
1
安装python 3.x
2
安装pycharm
3
安装pytest库
pip install pytest
pytest库4
安装yaml
pip install pyyaml
配置文件
5
安装pytest -html
pip install pytest-html
生成html报告
6
安装allure
pip install allure-pytest
描述测试用例
二、用例设计原则
主要有四点:
1、测试用例的文件名以test_*.py或*_test.py命名;
2、方法或函数以test_开头;
3、类以Test_开头;
4、所有的包必须要有__init__.py文件。
另外,想要直接在pycharm上执行测试用例,用例后必须加上:
if __name__ == "__main__": pytest.main('-q 用例.py')三、判断用例执行结果的方法
pytest通过assert断言来设置用例的预期执行结果,并判断实际执行结果是否与之一致,使用方法如下:
1、测试大小是否相等, assert可以使用直接使用“==”、“!=”、“<”、“>”、“>=”、"<=" 等符号来比较相等、不相等、小于、大于、大于等于和小于等于,例如:
assert 1 != 22、测试包含和不包含,assert 可以直接使用 in 和not in 来比较包含与不包含,例如:
assert a in b3、测试true或false,assert可以不需要任何辅助符号,直接判断对象是否为ture, assert not 用于判断是否为false,例如:
assert 1断言失败一般可以看到以下输出,代表用例的执行结果failure与我预期的success不符,即这条用例执行失败:
当然,也可以如下所示,指定断言失败的返回信息:
assert a % 2 == 0, "值为奇数,应为偶数"除此之外,pytest可以在断言的比较中提供丰富的上下文信息。例如:
def test_set_comparsion(): set1 = set("111") set2 = set("222") assert set1 == set2 四、yaml配置文件1、yaml(Yet Another Markup Language):是一种专门用来写配置文件的语言。
2、yaml的基本语法规则:
大小写敏感;
使用缩进表示层级关系(注意:这里只允许使用空格来表示缩进,空格数目不重要,不允许使用Tab键);
相同层级的元素左侧需对齐;
使用 # 表示注释;
3、yaml支持的三种数据结构:
对象:键值对的集合,又称为映射(mapping)/ wndxbc(hashes) / 字典(dictionary);
数组:一组按次序排列的值,又称为序列(sequence) / 列表(list);
纯量(scalars):单个的、不可再分的值。字符串、布尔值、整数、浮点数、Null、时间、日期;
4、读取和转换方法
用open方法读取yaml文件的数据;
再通过load方法转成字典;
比如说,我把Linux虚拟机的一些信息放到config.yaml文件里:
hostname: '10.2.12.87' #ipport: 22username: 'root'password: '123456'那么在用例中,就可以直接读取config.yaml文件,使用这些数据:
file = open("/TestData/config.yaml", encoding='utf-8')res = yaml.load(file, Loader=yaml.Fullloader)hostname = res['hostname']port = res['port']username = res['username']password = res['password']五、常用的执行用例的方法
1、执行某个文件夹下的所有用例:
pytest 文件夹名/
2、执行单条用例
pytest 用例.py
3、-k EXPRESSION按关键字匹配
pytest -k 'test_method or test_other'
将运行名称包含'test_method' 或 'test_other'的所有方法或类
4、-m MARKEXPR标记表达式
将运行用@ pytest.mark.slow装饰器修饰的所有测试
5、-v 增加冗余的用例执行输出;-q减少冗余的用例执行输出
6、-x 一旦遇到错误立即停止执行
7、--maxfail=num 错误达到一定的数量时停止执行
8、--lf(--last-failed)只运行上次运行失败的用例
9、--ff(--failed-first)优先执行上次运行失败的用例,再运行其他用例
10、-s 打印用例里print的内容
六、测试报告的生成
pytest-html模块用于生成测试报告,如果想生成测试报告,可以按照这样的方法执行用例:
pytest 用例.py --html=/路径/report.html或者这样执行,可以把css样式合并到html里:
pytest --html=/路径/report.html --self=contained-html报告的效果是这样的: