pytest---实现接口自动化的demo
今天同事遇到一个问题,想要实现一个接口自动化的框架,实现功能需要集成pytest、allure,执行完后,输出可视化的报告。但是他一直解决不了问题,所以找到我,让我帮忙看下
想要完成这个功能,需要了解pytest的特性
例如:
- 脚本文件名需要以test开头或者test结尾
- 测试类,需要已Test开头,并且内部不能有__init__(self)方法
- 测试case方法,需要已test_开头
既然想要做成一个公共的方法,自然接口具体数据就需要通过配置来完成,以配置形式来处理
以下是我做的一个demo,很简单的demo,具体的情况,脚本要怎么封装,需要根据想要的功能,去拓展或者修改,我这只是引导一个思路
首先是配置文件,我以txt文件举例
内容如下:
test_case001 我是模块1 我是第一个测试点 1 2
test_case002 我是模块1 我是第二个测试点 2 2
test_case003 我是模块2 我是第一个测试点 3 4
test_case004 我是模块2 我是第二个测试点 4 5
按照自己需要的格式,来准备数据。我这是举了一个简单例子,实际上通过yml文件或者json文件的格式来弄,易读性更好一些,并且我的脚本没有写预期结果、实际结果,需要自行补充
脚本内容如下 :
# -*- coding: utf-8 -*-
__author__ = 'felix'
import allure, pytest
#定义一个测试类
class TestCase(object):
pass
with open("./test.txt.", 'r', encoding='utf8') as f:
for l in f:
line = l.strip()
line_list = line.split(" ")
@pytest.mark.parametrize('a, b', [(line_list[4], line_list[3])]) #参数化
@allure.feature("{}".format(line_list[1])) #allure一级模块
@allure.story("{}".format(line_list[2])) #allure二级模块
def myfunc(self, a, b):
assert a == b
setattr(TestCase, "{}".format(line_list[0]), myfunc) #对TestCase类进行动态创建方法,方法名需要以test开头
执行脚本:pytest test_common.py --alluredir=./report/result
生成报告:allure generate ./report/result -o ./report/html
最终报告截图:


我这边只提供一个思路,如何做到公共类、公共方法实现
有问题,请在评论区留言
不知则问,不会则学

浙公网安备 33010602011771号