Pytest常用操作

1.pytest的原始约束

当不修改ini文件时(后续会讲修改方法),pytest有如下约束:
(1)模块约束:文件名需要满足test_.py格式开头或_test.py格式结尾。
(2)测试类以Test开头,并且不能带有 init 方法
(3)在类中,可以包含一个或多个test_开头的函数。

2.pytest执行操作

在这里介绍主函数执行法

在pytest文件夹中新创建一个文件(注意命名规范也要满足):

improt pytest
if__name__ == "__main__":
	pytest.main(["./testCase::test_1::Test_one::test_function"])
	

内容中的参数表示测试的位置在同目录下的testCase文件夹下的test_1文件中的Test_one类下的test_function函数,其中不指定函数就会测试类下的所有函数,不指定类就会测试文件下的所有类以及对应函数,不指定文件就会测试该文件夹下的所有测试文件。

常用参数如下:
1.-s ;输入我们用例中的调试信息

2.-v ;可以输出用例更加详细的执行信息,比如用例所在的文件及用例名称等

3.-vs ;输出更加详细的执行信息和调试信息

4.–reruns=2 ;对于失败的测试用例指定其重跑两次

5.-n 3 ;生成3个线程,分别执行用例,用于提高执行效率

6.-x ;只要有一个用例失败,就停止测试

7.–maxfail=2 ;出现两个用例失败,就停止测试

2.1. 终端输入及mark相关设置
(1)- ordering ;pytest默认测试用例从上到下执行,使用该方法可以改变执行顺序

class Test_One:
	@pytest.mark.run(order=2) #定义执行顺序为2号执行位
	def test_01(self):
		print("1")
	@pytest.mark.run(order=1) #定义执行顺序为1号执行位
	def test_02(self):
		print("2")

当在执行函数前加上该语句,就可以改变执行顺序。输出结果会先输出2再输出1

(2)-m “smoke” ; 执行smoke分组的用例,分组的方式如下:

class Test_One:
	@pytest.mark.snoke #定义为smoke用例
	def test_01(self):
		print("1")
	@pytest.mark.interface #定义为interface用例
	def test_02(self):
		print("2")

当需要执行多组用例:-m “smoke or interface”

(3)无需终端额外输入,无条件跳过用例和条件跳过用例

class Test_One:
    age = 18
	@pytest.mark.skip(reason="暂时无需测试") #无条件跳过该测试用例,并且理由为暂时无需测试
	def test_01(self):
		print("1")
	@pytest.mark.skipif(age>=18,reason="年满十八岁,无需测试该用例") #若类中关于age的值>=18则跳过该用例,并且理由是年满十八岁,无需测试该用例
	def test_02(self):
		print("2")

3.结合allure插件生成allure测试报告

安装插件和配置省略,可查看他人文章。下面介绍如何生成报告:
(1)生成临时文件:
– alluredir ./temp 空格后的语句表示将临时文件保存在同文件夹下的temp文件夹中(若没有则会创建文件夹)
(2)生成测试报告
利用主函数方式:

improt pytest
improt os
if__name__ == "__main__":
	pytest.main(["./testCase::test_1::Test_one::test_function"])
	os.system("allure generate ./temp -o ./report") #./temp表示在该文件夹下寻找临时文件 -o ./report 表示测试报告的存放位置

你可能感兴趣的:(自动化测试,测试用例,python,selenium)