我是耿晓,27 岁,在北京做了 5 年的软件测试。
近 4 年服务于一家医疗培训公司,平时在做功能测试之余,也会做接口测试相关。
在开荒、实践过程中会遇到很多问题,我会将阶段性的总结发布于此,渴望交流,希望佬儿哥佬儿姐们多多指点。

  • 在 parametrize()里放 fixture 需要用 pytest-lazy-fixture。我有用过,像下面这样:

  • 如果把造数放在用例内部,那最后的测试报告应该就会显示一条 case 吧,像上面的例子,如果把造数函数放在参数化里,allure 报告就会显示 6 条 case,以至于哪条 case 不通过显示的也比较明显🍻

  • 你说得对哦铁铁,使用生成器确实不能解决作者的问题,使用生成器只能解决写死数字致使的后续编辑时需要重新编辑排序数字的问题,并且是在特定的顺序执行的情况下才能达到预期效果。
    那有什么好的办法可以解决及不想将排序写死,还能控制用例执行顺序的方法呢?

  • 用 order 确实是控制用例执行顺序的好办法,但最大的弊端就是不利于修改,比如已经拍好了 order(1),order(2),,,后面编辑的时候要在其中插入一条 case,那就得重新遍历后面所有已经写好的序号。
    我目前用的是生成器,可以有效解决后续编辑需要修改 order 编号的问题,大致如下:


  • load_cases() 里面的 order_id 是创建订单接口创建成功后返回的,并非测试前写死的。创建订单接口本身也要作为待测试接口,在此情况下,我是不是可以理解为在 load_cases() 里面将 create 接口默认认为是测试通过的接口,然后根据创建订单接口的返回值来构造 return 的值

  • 文中提到的参数化用的是@pytest.mark.parametrize,可能由于编辑器问题,发布后变成了@user5ize☀

  • 这个问题被解决了!定义两个用于生成编号的生成器
    具体是这样的:在此之前为了 allure 报告的展示顺序,我是在编写 case 的同时手动添加的编号,这样就会导致在编写 case 时费时费力,在后期维护过程中也不能很好的解决在用例中间插入新用例的编号如何选取的问题。为此,经过不断地实践,确定了目前的方案:定义两个用于生成编号的生成器函数,一个是用于不同测试板块的编号"module_id()",另一个是用于生成各个测试用例的编号"case_id()",然后在测试用例中,在 allure.feature() 中添加测试板块编号,在 allure.story() 中添加测试用例编号,去除之前版本中的@allure.title() 和测试用例中的编号 (意义不大,那就能省则省。直接上图,直观些:
    原测试用例如下:

    升级后用例如下:


    升级后 allure 测试报告如下

    从以上描述可以看出我们即优化了测试用例的编写,又控制住了 allure 报告中的用例展示顺序。
    当然,如果有佬儿哥佬儿姐有更好的解决方案,还希望可以多多指点。

    题外话:此前有关注过我的小伙伴可能知道我将接口自动化的搭建过程总结过两篇文章,将从 0 摸索的过程详细的记录了下来,这本就是一个有趣的不断发现问题,解决问题的过程,距上次升级,又有了一些沉淀,我打算将此次更新过程再总结发布出来,此次升级大致的内容如下:
    1.升级测试模块和测试用例的编号形式 (如上);
    2.解决接口依赖情况下依赖参数如何做数据驱动的问题;
    3.解决各个用例中部分内容重复编写的问题,例如每个用例中都会写 allure 报告信息收集的代码、接口响应时间和 status_code == 200 的断言语句。最终效果是同一用例由原 18 行缩减至 10 行,同样的测试脚本由原 3600 行缩减至 2800 行。
    4.增加对接口返回数据的数据类型断言功能;
    除此之外还有一些测试脚本的目录优化等内容,如果感兴趣的伙伴可以关注一下。在自我总结之余,我更希望的也是可以收到小伙伴们的各种指导意见,下次见~😆

  • 如果在 order 中手动编序号那我感觉和我直接在用例名称里添加序号无异了,后续维护时在用例中间添加新用例的话这个 order 是不是还需要重排😧

  • 我用例中添加了 feature 和 story,我希望 allure 的报告中也先按照用例定义的 feature 顺序排序,然后同一 feature 下按照用例定义的 story 顺序排序,目前使用 order 只能让最里层的用例 (#1、#2 这些) 顺序排序,至于 feature 和 story 还是乱的。我贴张图可能会清楚些:

  • 必然试过了,必然不行,至于 order 和名称的逻辑规则我也正在查😄

我是耿晓,27 岁,在北京做了 5 年的软件测试。
近 4 年服务于一家医疗培训公司,平时在做功能测试之余,也会做接口测试相关。
在开荒、实践过程中会遇到很多问题,我会将阶段性的总结发布于此,渴望交流,希望佬儿哥佬儿姐们多多指点。