pytest-rerunfailures,pytest报错

  pytest-rerunfailures,pytest报错

  1.断言基础知识测试用例的三个要素:输入、执行条件和预期输出。

  预期输出取决于断言。简单来说,就是把实际结果和预期结果进行比较。如果符合预期,测试通过;如果不符合预期,测试失败。

  1.断言语法pytest不同于unittest。pytest使用python自己的assert关键字断言,unittest使用自己的断言,需要self调用。

  Assert关键字后面可以跟一个表达式。只要表达式的最终结果为真,则断言通过,用例执行成功,否则用例失败。

  常见格式:

  断言xx:判断xx为真断言非xx:判断xx为非真断言a在b中:判断b包含aassert a==b:判断a等于bassert a!=b:判断A不等于bassert a b:判断A大于b(,=,=等。) 2.用户定义的断言失败信息。第一种:什么都不做,报告默认的错误信息,比如assert 1 = 23 :assert error:assert 1 = 23 。

  第二种:用户自定义的错误信息,比如assert 1==23 , 1。‘1’不是等于23吗?故障后报告:AssertionError: 1不是等于23吗?

  二。异常断言1。异常断言pytest.raisespytest.raises是上下文管理器。当它所管理的执行代码抛出我们指定类型的异常时,它可以将异常作为异常对象捕获,继续执行后续代码,而不会报错。

  Pytest.raises将只捕获指定的异常类型。如果遇到其他类型的异常或者没有报错,会直接报错,导致用例执行失败。

  应用场景:当某些代码块或函数会引发意外异常,导致程序无法运行时,使用raises来捕获匹配的异常,代码可以继续正常运行。

  定义测试_目录01_8():

  # pytest.raises将捕获AttributeError类型。如果这个错误发生在执行代码中,它将继续执行而不报告错误,对于其他类型的错误,它仍然会报告一个错误。

  #常见类型:AttributeError ValueError等。BaseException(通用捕获)

  使用pytest.raises(AttributeError)作为e:

  raise attribute error( attribute error )#这是执行代码。

  # raise ValueError(“值错误”)

  打印()

  Print(错误类型:,type(e.type),e.type) #错误类型:

  Print(错误类型名称:,type(e.typename),e.typename) #错误类型名称:属性错误

  Print(错误信息:,type(e.value),e.value) #错误信息:属性错误

  assert e.type==AttributeError

  assert e . typename== attribute error

  # assert e . value== attribute error #这是错误的语法,type(e.value)=,是类,不是字符串,需要以下方式。

  assert“属性报告了str(e.value)执行结果中的错误:用例通过。

  执行过程:执行代码报告属性错误——异常管理器捕获并生成异常实例e——继续执行管理器外的其他代码。

  异常的公共属性:类型、类型名、值、回溯

  注意:如果异常管理的执行代码中没有预测的异常,将会报告一个错误,用例的执行将会失败。

  2.异常断言定期匹配pytest.raises上下文管理器,并支持正则表达式。match参数是正则表达式,这意味着re.search()

  匹配的是异常实例的值。如果异常类型匹配,并且异常信息值和re.search (expression )也匹配,则意味着发生了预期的异常。

  执行结果:通过

  def测试_目录01_9():

  with pytest.raises(ValueError,match=r 。*\d$ )作为e:

  # raise value error( value error )#这将导致用例失败:断言错误:regexpattern 。* \ \ d $ 与“值错误”不匹配。

  引发ValueError(“该值被报告为错误666”)

  打印()

  Print(错误类型:,type(e.type),e.type) #错误类型:

  Print(错误类型名称:,type(e.typename),e.typename) #错误类型名称:值错误

  Print(错误信息:,type(e.value),e.value) #错误信息:值错误666

  Print (error:,type (e.traceback),e.traceback) # error: []

  断言e.type==ValueError

  assert e.typename==ValueError

  # assert e . value== attribute error #这是错误的语法,type(e.value)=,是类,不是字符串,需要以下方式。

  在str(e.value) III中断言“值被报告为错误”。pytest使用xfail来处理失败。xfail的意思是将测试用例标记为预期失败,常用于测试尚未实现的功能或尚未修复的错误。

  当测试被标记为预期失败时(用修饰符pytest.mark.xfail标记):

  无异常,通过,测试报告显示xpass预期异常,失败,测试报告显示xfail其他异常,失败,测试报告显示failed 1 . xfail基本语法@ pytest . mark . xfail(condition=none,*,reason=none,raises=none,run=true,strict=false

  Condition( bool或str)( true/false或条件字符串)将测试函数标记为xfail的条件。如果是bool,还必须指定以下原因。reason(str)——测试函数被标记为xfail的原因描述,在报告错误后会显示,相当于自定义异常提示引发(type[exception])——测试函数预计会引起的子类异常,如ValueError、TypeError等。其他人没有通过测试。run(bool)-测试函数是否被实际执行。如果为False,函数将始终为xfail,并且不会严格执行(bool)-如果测试结果为xpassed,则默认为False。如果为真,即用例没有错误,测试结果也是失败。您可以在pytest.ini配置文件中指定xfail_strict,这将对xfail的全局用例生效。如果配置文件和用例都存在,以用例中的为准。2.检查断言decorator @ py test . mark . xfail(raises= exception type )

  检查是否有任何异常。有三种常见情况:

  @ pytest . mark . xfaill(raises=ValueError)#检查断言装饰器并检查value error类型错误。

  def测试_目录01_9():

  # Case 1:出现预期错误,用例XFAIL未来不执行。

  # raise value error( value error )# xfaildir 01/dir 01 _ test . py:test _ dir 01 _ 9

  #案例2:发生其他错误,用例失败,不会影响用例,以后执行不会继续。

  引发AttributeError(属性错误)# failed dir 01/dir 01 _ test . py:test _ dir 01 _ 9-attribute error:属性错误

  #案例3:没有错误,用例XPASS

  # print(我可以到这里吗?)# xpass dir 01/dir 01 _ test . py:test _ dir 01 _ 9摘要:

  用pytest.raise可能更适合刻意测试异常代码@ py test . mark . xfail对于检查未修复的错误(即可能发生异常),使用check断言可能更好。3.reason自定义错误消息@ pytest . mark . xfaill(raises=value error,reason=即值错误)# check

  def测试_目录01_9():

  #出现预期错误,用例XFAIL将伴随失败原因的描述。

  Raise ValueError(值报错)# dir 01/dir 01 _ test . py:test _ dir 01 _ 9x fail(即值报错)4 .条件用法两种用法:

  #条件使用它的两种方法

  # @ pytest . mark . xfaill( 11 ^ 2 ,raises=typeerror) #第一种字符串会把字符串解析成表达式,判断11 ^ 2得到bool。

  # @ pytest.mark.xfaill (11 2 ,raises=typeerror) # 11 2为False,此装饰器不会生效。

  @ pytest.mark.xfaill (11 2,reason= 11大于2,我生效,raises=TypeError) #第二种bool原因

  def测试_函数_003():

  引发类型错误( 777) # xfail

  #引发AttributeError(888) #失败

  #断言为真# xpassed

  # assert False #失败示例:

  导入系统

  @ pytest . mark . xfail(sys . platform== win32 ,reason=当平台为Win32时,此用例由xfail管理,否则为常用用例)

  def测试_函数_003():

  assert true # xpass dir 01/dir 01 _ test . py:test _ function _ 003当平台为win32时,此用例由xfail管理,否则为常用用例。

  # Assert false # xfail dir 01/dir 01 _ test . py:test _ function _ 003当平台为win32时,此用例由XFail管理,否则为常用用例。条件是:sys.platform==win32

  满足条件:用例xfail将生效,如果没有错误则为XPASS,如果有错误则为XFAIL。

  不合格:是没有xfail管理的普通用例。

  参考菠萝

  转载请联系作者取得转载授权,否则将追究法律责任。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: