pyunit扩展:文字测试用例和脚本测试用例同源

文字测试用例可以便于我们理解测试设计和测试目的。但是要维护两份用例(文字和脚本)让人觉得麻烦,久而久之文字用例没有更新,带来不一致,反而会引起误解。最好的办法是将文字用例和脚本用例放在一起。


但是脚本用例非常分散,而文字用例通常希望放在一起(列表中)来看,因此将文字用例从脚本中导出非常有必要。


#test info field names
fields = ('goal:', 'step:', 'wanted:')
#match <td>...</td>
td = '<td>[\s\S]*?</td>'

class ExportTestInfoProgram(TestProgram):
	'''
	export info of test method to html
	'''
	@staticmethod
	def gettestdesc(test):
		desc = getattr(test, test._testMethodName).__doc__

		if None == desc:
			return '%s%s%s' % ('<tr>', '<td></td>' * len(fields), '</tr>')
		
		values = re.findall(td, desc)
		names = re.split(td, desc)
		ret = '<tr>'
		for field in fields:
			found = False
			for i in range(len(names)):
				if field == names[i].strip():
					ret += values[i].replace('\n', '<br>')	#replace \n to html br
					found = True
					break
			if not found:
				ret += '<td></td>'
				
		return ret + '</tr>'
		
	def runTests(self):
		def _printTest(test):
			if isinstance(test, TestSuite):
				for child in test:
					_printTest(child)
			elif isinstance(test, TestCase):
				#do nothing except print test case info
				print ExportTestInfoProgram.gettestdesc(test)

		_printTest(self.test)  

class testdemo2(TestCase):
	#use <td></td> to split fields and define html format
	def test111(self):
		'''
goal:<td>test111</td>
step:<td>1.hello
2.world</td>
wanted:<td>hello world</td>
desc:<td>test
case</td>
		'''
		pass
	def test222(self):
		'''
goal:<td>touch screen
and
click button</td>
wanted:<td>1.touch
2.click</td>
		'''
		pass
		

if __name__ == "__main__":
	ExportTestInfoProgram()

执行的结果是

<tr><td>test111</td><td>1.hello<br>2.world</td><td>hello world</td></tr>
<tr><td>touch screen<br>and<br>click button</td><td></td><td>1.touch<br>2.click</td></tr>

再稍作加工我们就能得到一份html的文本用例了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值