• 目前还招人妈

  • 好啦,问题已解决,谢谢各位啦,感谢各位提出的思路,感谢@xiaoj (杰) 和@keke

    在这里做个总结:

    1. xiaoj (杰)的方法
    def skipTest(value):
    def deco(function):
    def wrapper(self, *args, **kwargs):
    if not getattr(self, value):
    self.skipTest('跳过用例')
    else:
    function(self, *args, **kwargs)
    return wrapper
    return deco

    这个方法适用于当前的测试类中,当且仅当只依赖一个测试用例的时候使用,比如登录,获取用户信息,退出,在这3个测试用例中,获取用户信息和退出都依赖登录,所以可以使用这种依赖方法,如果当前的测试用例还依赖了第二个其他的测试用例,则本方法不适应

    2.keke的方法

    def dependon(depend=None):
    import functools
    def wraper_func(test_func):
    @functools.wraps(test_func)
    def inner_func(self):
    if depend == test_func.__name__:
    raise ValueError("{} cannot depend on itself".format(depend))
    print("self._resultForDoCleanups", self._resultForDoCleanups.__dict__)
    failures = str([fail[0] for fail in self._outcome.result.failures])
    errors = str([error[0] for error in self._outcome.result.errors])
    skipped = str([error[0] for error in self._outcome.result.skipped])
    flag = (depend in failures) or (depend in errors) or (depend in skipped)
    test = unittest.skipIf(flag, '{} failed or error or skipped'.format(depend))(test_func)
    return test(self)

    return inner_func

    对这个方法做了一下小小的改动,以上就是最新的代码。其中depend参数的类型为string,值就是测试用例的方法名称。

    可以适用于依赖的测试用例失败或错误时都跳过测试用例,有dependon装饰器标记的用例必须在用例depend(test_login)之后执行

    此方法适用于python3.4+,如果是低版本的python3,请将 self._outcome.result修改为self._outcomeForDoCleanups,如果你是python2版本,请将 self._outcome.result修改为self._resultForDoCleanups

    最后,再次感谢各位,祝各位春节快乐!

  • 这个思路不错,但是如果有多个依赖关系的话,这样就不太好,我一直想获取test_1的测试结果,就是获取不到,有了test_1 的执行结果,就可以判断了

  • 有这个思路,但是写不出来,没法获取依赖方法的测试执行结果,可以给个demo吗 😀

  • 嗯啊,这个用过,感觉还是pytest大法好,但是当前只能用unittets实现😂 ,有相关思路吗

  • 哦哦 没有用这个框架

  • 思路不错,搞一波再说

  • 这个方法倒是不错啊,谢谢大佬了

  • pytest.mark 用过了哦,但是 pytest.mark 只支持一个分组参数的传递,比如 -m key1,我期望的是 -m key1,key2,key3,类似于这种的分组,pytest.mark 有点局限哦

  • 对的,谢谢大佬,优秀

python 爱好者,测试工程师