本文以 Driver APP 的登陆、check in、check out 为例,介绍 pytest + allure 生成测试报告的一些简单的使用方法。
一、pytest
1. 作用:对测试用例进行测试,并生成测试报告
2. pytest 断言的那些事儿
(参考:pytest之断言)
(参考:接口测试 Pytest断言处理_assert和异常断言)
(参考:pytest-断言assert用法)
(参考:单元测试的布尔断言方法 assertTrue 和 assertFalse 与身份断言 assertIs 之间的区别)
assert xx # 判断 xx 为真
assert not xx # 判断 xx 为假
assert a in b # 判断 a 包含于 b
assert a == b # 判断 a 等于 b
assert a != b # 判断 a 不等于 b
pytest 的断言可以进行优化,即可以加一些备注信息,让运行结果可读性更强。
3. pytest 生成测试报告
pytest -s -q --alluredir xml_report_path # 方式一:终端运行
pytest.main(["-s", "-q", "--alluredir", "./report/xml"]) # 方式二:脚本文件中运行
注意:
1. 如果仅仅在终端中运行 "pytest",那么是没有生成测试报告的!
2. 使用 pytest 的时候要注意几点,其中有一条是:类方法中不能含有 __init__ 方法!如下图:
(参见:【20200828】【工作中也要充电呀】单元测试框架 pytest 的使用)
二、allure
1. 作用:生成美观的测试报告
2. 使用方法:allure serve [xml_report_path] [html_report_path]
三、知识点
1. python 中清空某个文件夹的方法:shutil.rmtree("path")
注意:清空文件夹之后,把文件夹也删除了!所以,如果要使用空的文件夹,那么就需要使用 os.mkdir("path") 新建这个文件夹。如下图:
2. python 中判断文件夹下某文件是否存在的三种方法
(参考:Python判断文件是否存在的三种方法)
(1) 使用 os 模块:
判断文件夹是否存在:os.path.exists("mydir")
判断文件是否存在:os.path.exists("filename")
(2) 使用 try 语句
try:
f = open("xx")
f.close()
except FileNotFoundError:
print("xx File does not exist")
else:
print("xx File exists")
(3) 使用 pathlib 模块
3. PyCharm: method may be static 的原因及解决方法
(参考:PyCharm:method may be static)
不会报错,但是会有警告。
原因:类中这个方法没有使用类中的变量,例如下图:num_keyboard() 方法没有使用其他方法的变量,所以是静态方法。
解决方法:删掉该类方法的 "self",并且在类方法前面加上 "@staticmethod" 就可以了。
4. PyCharm: The dictionary creation could be rewritten as a dictionary literal 的解决方法
(参考:Python学习笔记7:This dictionary creation could be rewritten as a dictionary literal)
(参考:pytharm – 为什么Pycharm的督察抱怨“d = {}”?)
解决方法:建立字典的方法由 {} 换成 dict() 即可。