python - 带有 XMLTestRunner 的单元测试未按预期工作
问题描述
我在下面的尝试中有几个问题。调用 to 似乎一切都很好isEven
,但是
- TestRunner 对 ping 的调用似乎只使用了该数组中的第一个元素
- 生成的 xml
isEven(..)
具有name="test_even_0"和classname="TestCase"正如预期的那样,但是 ping(..) 的 xml 具有name="111"和classname="TestCase.test_ping_10.250.70"
classname和name属性看起来都怪怪的!
请帮忙
import sys, os, json, unittest, xmlrunner
data = ["10.250.70.88","10.250.70.111"]
class TestCase(unittest.TestCase):
longMessage = True
def isEven(self, i):
self.assertEquals(0, i % 2)
def ping(self, host):
print '** ', host, ' **'
if host.endswith('1'):
self.assertFalse
for i in xrange(0, 2):
def test_isEven(num):
return lambda self: self.isEven(num)
setattr(TestCase, "test_even_%r" % i, test_isEven(i))
for i in data:
print '* ', i, ' *'
def test_ping(host):
return lambda self: self.ping(i)
setattr(TestCase, "test_ping_%s" % i, test_ping(i))
runner = xmlrunner.XMLTestRunner(output=sys.stdout)
unittest.main(testRunner=runner)
下面输出 XML
<?xml version="1.0" encoding="UTF-8"?>
<testsuites>
<testsuite errors="0" failures="1" file=".py" name="TestCase-20210603151437" skipped="0" tests="4" time="0.004" timestamp="2021-06-03T15:14:37">
<testcase classname="TestCase" file="test\python\test_Dynamic.py" line="18" name="test_even_0" time="0.001" timestamp="2021-06-03T15:14:37">
<system-out>
<![CDATA[]]> </system-out>
<system-err>
<![CDATA[]]> </system-err>
</testcase>
<testcase classname="TestCase.test_ping_10.250.70" file="test\python\test_Dynamic.py" line="24" name="111" time="0.001" timestamp="2021-06-03T15:14:37">
<system-out>
<![CDATA[** 10.250.70.111 **
]]> </system-out>
<system-err>
<![CDATA[]]> </system-err>
</testcase>
<testcase classname="TestCase.test_ping_10.250.70" file="test\python\test_Dynamic.py" line="24" name="88" time="0.001" timestamp="2021-06-03T15:14:37">
<system-out>
<![CDATA[** 10.250.70.111 **
]]> </system-out>
<system-err>
<![CDATA[]]> </system-err>
</testcase>
<testcase classname="TestCase" file="test\python\test_Dynamic.py" line="18" name="test_even_1" time="0.001" timestamp="2021-06-03T15:14:37">
<failure message="0 != 1" type="AssertionError">
<![CDATA[Traceback (most recent call last):
File "test\python\test_Dynamic.py", line 18, in <lambda>
return lambda self: self.isEven(num)
File "test\python\test_Dynamic.py", line 9, in isEven
self.assertEquals(0, i % 2)
AssertionError: 0 != 1
]]> </failure>
<system-out>
<![CDATA[]]> </system-out>
<system-err>
<![CDATA[]]> </system-err>
</testcase>
</testsuite>
</testsuites>
解决方案
推荐阅读
- vba - 将第一个列表的每个元素与第二个列表的所有元素进行比较以找到匹配项
- ethereum - 无法在 BSC MAIN NET 上验证合约源代码。“发生错误异常 err_code_1:错误 - 无法连接到远程服务器”
- java - 需要帮助是使用 maven 配置文件排除包含 junits 的包
- timer - ST32CubeMx 配置的一种脉冲模式
- mongodb - 较旧的 oplog 条目不会被截断
- android - RecyclerView:没有附加适配器;在显示移动联系人的片段中跳过布局
- tableau-api - 如何忽略画面中的聚合和非聚合错误?
- java - 有没有办法将多种方法减少为一种方法,使用 Function作为方法参数?
- javascript - 我在 iframe 中呈现的广告似乎无法读取浏览器 cookie。我该如何解决?
- javascript - 如何将一个html页面嵌入到另一个页面中