Python和pytest-检查测试是否通过或失败并执行代码

时间:2019-11-27 09:54:45

标签: python pytest

我正在使用python进行测试自动化,我们有一个测试管理工具。我们试图做的是在此管理工具中更新测试用例,以便测试失败的人可以很快地看到它。

但是问题是,我无法弄清楚测试何时通过或失败。所以我的测试看起来像这样:

@decorator(testId = 5, comment = "Test fails or not")
    def test(self):
        # assert
        assert True == False

不,我想用装饰器解决它,但是没有解决。因此,该测试将失败,现在我需要将其在线推送到测试管理系统。有人知道如何执行此操作吗?我的装饰代码如下:

def decorator(*args, **kwargs):
    print("Inside decorator")
    def inner(func):
        print("testId: ", kwargs["testId"])
        if "comment" in kwargs.keys():
            print("comment: ", kwargs["comment"])
        try:
            pass
        except AssertionError as assertionError:
            print("Assertion fails: " + str(assertionError))
            raise
        except Exception as ex:
            print("Something else failed")
            print("exception: " + str(ex))
            raise
        finally:
            print("ending")
        return func
    return inner

1 个答案:

答案 0 :(得分:0)

搜索了一段时间后,我做了一个更好的装饰器。看起来像这样:

import functools

def exception(function):
  @functools.wraps(function)
  def wrapper(*args, **kwargs):
    try:
      return function(*args, **kwargs)
    except:
      print("error in: " + function.__name__)
      raise
  return wrapper

@exception
def zero_divide():
    1 / 1
    a = AnObjectTHatDOESNTEXIST()

print("start")
zero_divide()
print("end")