关于接口自动化用例设计存在一些疑问,求助

背景假设:一个工单功能包括增删改查四个接口
假设Test_order.py里面需要设计测试用例
(1)是通过4个test_xx用例去分别实现四个接口用例 还是 1个test_xx用例整合这四个接口实现一个业务流程,先查询新增修改后删除
(2)如果采用4个test_xx用例去分别实现四个接口用例
例如 新增新增 挂了,我如何去跳过修改接口,去调用删除接口
尝试使用pytest-xfail效果并不满意

关于第二点,已解决
解决方案:
(1)



@pytest.hookimpl(hookwrapper=True, tryfirst=True)
def pytest_runtest_makereport(item, call):
    print('------------------------------------')

    # 获取钩子方法的调用结果
    out = yield
    print('用例执行结果', out)

    # 3. 从钩子方法的调用结果中获取测试报告
    report = out.get_result()
    if report.when == "call":
        print('测试报告:%s' % report)
        print('步骤:%s' % report.when)
        print('nodeid:%s' % report.nodeid)
        print('description:%s' % str(item.function.__doc__))
        print(('运行结果: %s' % report.outcome)) 

进行测试结果提取,并把它写入到文件中
然后根据结果来判断
(2)使用 pytest-dependency插件控制

  1. 通过4个test_xx用例去分别实现四个接口用例你是一定要测的
  2. 四个整合看你的业务流程,如果没这个需求,就不用测
  • 单个接口的功能保证,这个是肯定要去实现的。至于把这个接口所有的都串联一遍,要看你的业务了。比如我的工作只给用户创建和修改,那就没必要调用删除了,或者其他的业务流程;
  • 当一个接口失败之后,我需要调用其他的接口的话,这个可以自己去实现啊。eg:我用个httpUtils做个网络请求的工具类,当我的请求由于各种异常,我就返回null,当判断为null时,调用其他接口,但是如果每个都要这么写就很烦,最好做个装饰器。

[quote=“Test, post:5, topic:5391, full:true”]
关于第二点,我这边想的场景是
如果增删改,我都是操作同一个测试数据,通过增接口造出来的
如果增结果出异常,那么删改接口此时找不到增接口的数据,我需要引导他去删除或者修改一个原本数据库存在的数据,来保证删改接口能正常运行。
此时测试报告就只显示增接口出异常,相当于增删改都出异常,错误率就降低了。
但是,实际这种情况,有没有必要做这种处理?
自动化本身就是要尽早发现错误,如果我发现了增接口出错,那么我应该直接跟开发沟通处理了。后面的删改在下一次修改后本身还要再跑一次。有没有必要在这一次绕路来验证通过?

在我的理解,如果你组合成一个场景,类似于你登录都失败了,后面的交易就没必要了。在接口上面也是这样,我前面的增加都有问题了,那后面就让他不用执行就可以了,这个就是一个失败的场景。所以问题就是在于维度不一样,单接口的时候,维度是单个接口的成功与否,场景的维度在于只要有任何一个中间链路有问题,那就是失败。
而且当你上报这个错误的时候,开发经过修改之后,你还是要回归一次,所以在我理解没必要这么费事去绕路了。

好的谢谢 :yum: