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

你有用户名007 · 2019年11月28日 · 最后由 林冲冲 回复于 2024年03月04日 · 5503 次阅读

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

共收到 12 条回复 时间 点赞

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 请求,谢谢推荐,一定去学习一下

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

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

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

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

陈恒捷 回复

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

13楼 已删除

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

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

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

话说 2024 年了,现在有什么自动生成测试用例的工具了么?

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册