接口测试 python+pytest+allure+excel 接口自动化框架怎么实现自动生成测试用例

jialiwu · November 28, 2019 · Last by big9sun replied at December 03, 2019 · 1122 hits

最近根据学习的文章,自己搭建了一个python+pytest+allure+excel的框架,支持通过读取excel文件数据获取接口相关调用信息,然后进行用例的编写。
为提升实际工作效率,希望自己的框架可以支持通过读取excel数据自动生成测试用例,但是目前搜索到的资料都不太适用集成到目前的框架中(有些是java语言开发的方法,有些是运用的unittest+ddt),在这里想要请教一下社区的大佬们有什么好的实现方式可以推荐的吗?万分感谢!

共收到 11 条回复 时间 点赞

python+pytest+allure+excel的框架,可以交流一下吗

你打算用什么驱动接口请求呢?requests还是啥?
无论数据放在哪里,最终都是读取>组织测试用例>执行>解析结果>输出报告。
我写过个基于 react+ python + jmeter + mysql的:https://github.com/t880216t/IAT
项目有更新,文档不是最新的, 仅供参考

希望自己的框架可以支持通过读取excel数据自动生成测试用例

这句话隐含的信息量太多了,如果没有更具体的信息不好给出意见建议。

建议补充下:
1、why。目前工作效率的瓶颈是什么,为何期望要通过 希望自己的框架可以支持通过读取excel数据自动生成测试用例 这个方式去突破?说不定这个其实并不是最佳的方法。
2、what。这个自动生成用例,需要做到什么程度、什么效果,才能解决这个瓶颈?类似需求,先得来个原型让大家知道大概要做成啥样子,再聊技术方案。
3、how。excel 数据是什么样的数据,给个具体例子(不要是虚构的,直接用实际的就好)?生成的测试用例大概需要是什么样子的,也给个例子(同样是真实的)?目前对于这个实现有没有什么初步的想法?直接伸手不是个好习惯。

文件读取熟吗,该怎么传参 不要急着去写,还是先熟悉一下python 收获会更大

陈恒捷 回复

谢谢给出的建议,我的提问描述太模糊了,十分抱歉。现在我就给出的建议,具体描述一下我的问题:
1.对于why的回答:目前框架的现状是可以通过读取excel中的接口数据,自己组装生成对应的一个测试用例(request请求)然后执行,解析结果最后会输出测试报告。感觉维护起来比较费时,所以我想是否可以写一个用例模板,然后先获取表格所有的数据,再按照模板输出一个个测试用例,提高工作效率。现在我苦恼的是如何写这样一个模板,用什么方式让数据按照模板生成一个测试用例
2.对于what的回答:希望达到的效果是也如上一个问题所描述的那样,可以支持先读取excel中所有的数据之后,批量的生成一个个独立的测试用例(即一个完整的request请求)
3.对于how的回答:
目前excel的表格内容如下:

生成的测试用例大致如下:

class TestLogin:
@allure.feature(' 接口测试')
@allure.story('xxxx')
@allure.severity('blocker')
@allure.step('xxxxxx接口')
def test_adv_login(self):
# 获取用例表格
excelPath = os.path.dirname(os.path.realpath(__file__))
testExcel = os.path.join(excelPath, 'debug_api.xlsx')
sheetName = 'V1.0'

# 创建日志对象
# mylog = log.MyLog()
test = Assert.Assertions()
data = ReadExcel(testExcel,sheetName).dict_data()
s = requests.session()
reponse = send_requests(s,data[0])
print(reponse)

# 断言
allure.attach('实际结果','{}'.format(reponse['text']))
sc = reponse['statuscode']
assert test.assert_code(sc, '200')

以上是一些具体的描述。我初步的想法是在读取文件内容之后,遍历数据的时候,按照模板生成一个个具体的用例,但是不知道该怎么下手编写模板和按照模板生成用例。希望可以通过交流获取到一些方法和意见,谢谢!

81—1 回复

是用的requests请求,谢谢推荐,一定去学习一下

jialiwu 回复

有个疑问,你给的那段 python 代码看起来是直接遍历 excel 内容的,我理解你要增加用例,应该只需要修改 excel 内容,不需要改代码的。

所以不大理解你的 “自动生成用例” 定义是什么?

我对这个 “自动生成用例” 的理解,会有两种类型:
1、自动生成代码。根据明确的 request、response 报文相关信息,生成对应的单个用例执行代码,例如 java 的 mybatis generator 那样根据数据库表结构定义,自动生成各个数据库表的增删改查方法。
2、自动生成用例。根据接口文档提供的信息,自动生成不同场景的单接口测试用例。比如接口文档定义了 request 中一个字段是可选值,那就自动生成带有这个字段和不带有这个字段的两个 request body ,作为两个独立的用例供后面程序执行。

不知道你是属于那种类型?

陈恒捷 回复

第一种的类型的,自动生成代码。

9Floor has been deleted

现在读取excel的方式之后应该会变化一下,我想的是先直接读取整张表格的内容,然后再遍历数据,遍历数据的时候按照模板生成单个用例执行代码

接口自动生成用例 我觉得非ai 做不到,哪怕用ai也做不全,如果写在excel里,还不如用jmeter更好用呢

11楼说的对 目前已有的很多可视化工具里提供了接口测试以及可持续集成的解决方案,例如postman和jmeter,如果不是非得python的话这些工具省时省力 不失为一种好的途径

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up