unittest测试框架(二)

136 篇文章 25 订阅
14 篇文章 0 订阅

一、忽略测试用例

unittest支持忽略部分测试用例不执行,分无条件忽略和有条件忽略,通过装饰器实现,使用unitest.skip装饰器族跳过test method或者test class

装饰器

这些装饰器包括:
@unittest.skip(reason):无条件跳过测试,reason描述为什么跳过测试

@unittest.skipIf(conditition,reason):condititon为true时跳过测试

@unittest.skipUnless(condition,reason):condition不是true时跳过测试

@expected failure:使用@unittest.expectedFailure装饰器,如果test失败了,这个test不计入失败的case数目

例如:

def testsub(self): #具体的测试用例
	self.assertEqual(self.testnum.sub(),-1,"testing sub");

@unittest.skip("test skipping") #跳过测试用例
def testmulti(self): #具体的测试用例
	self.assertEqual(self.testnum.multi(),12,"testing multi");

 

二、运行测试集

unittest使用TestRunner类作为测试用例的基本执行环境,来驱动整个单元测试过程,在单元测试时,一般不直接使用TestRunner类,而是使用其子类TextTestRunner来完成测试,并将结果以文本方式显示出来

runner=unittest.TextTestRunner()
runner.run(suite)

同时,在unittest模块中定义了一个名为main的全局方法,使用它可以很方便地将一个单元测试模块变成可以直接运行的测试脚本,main()方法使用TestLoader类来搜索所有包含在该模块中的测试方法,并自动执行它们,如果Python程序员能够按照约定(以test开头)来命名所有的测试方法,那么只需要在测试模块的最后加入下面几行代码即可:

if __name__ == "__main__":
unittest.main()

或者加参数如下:

unittest.main(defaultTest = 'suite')

 

三、批量执行用例

通过前面的介绍,我们可以在一个.py文件里面编写多个测试用例,然后执行文件里的所有测试用例,但是如果测试用例数量过多,放一文件里面就不合理

比较合理的做法是把相关的几条用例放到一个.py文件里,把所有.py的文件放到一个文件夹下,然后通过一个程序执行文件夹里面所有用例

如图所示:
在这里插入图片描述
实现方法:
在这里插入图片描述

baidu.py代码

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time,os,unittest

class baidu(unittest.TestCase):
	def setUp(self):
		Chromedi = "C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe" ;
		os.environ["webdriver.Chrome.driver"] = Chromedi;
		self.driver =webdriver.Chrome(Chromedi);
		self.baseurl="http://www.baidu.com" self.verificationErrors=[];
		self.accpet_next_alert = True;
	
	#测试百度知道链接是否正确
	def test_baidu_set(self):
		driver =self.driver;
		driver.maximize_window();
		driver.get(self.baseurl+"/");
		m=driver.find_element_by_name("tj_briicon");
		ActionChains(driver).move_to_element(m).perform();
		driver.find_element_by_partial_link_text("知道").click();
		# self.assertEqual(driver.current_url,"http://zhidao.baidu.com/");
		self.assertEqual(driver.title,u"百度知道 - 全球最大中文互动问答平台");
		time.sleep(2);
		
	def tearDown(self):
		self.driver.quit();
		
if __name__ == "__main__":
	unittest.main()

search.py代码

from selenium import webdriver
import time,os,unittest

class search(unittest.TestCase):
	def setUp(self):
		Chromedi = "C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe";
		os.environ["webdriver.Chrome.driver"] = Chromedi;
		self.driver =webdriver.Chrome(Chromedi);
		self.baseurl="http://www.baidu.com" self.verificationErrors=[];
		self.accpet_next_alert = True;

	#测试百度搜索
	def test_search(self):
		driver =self.driver;
		driver.maximize_window();
		driver.get(self.baseurl+"/");
		driver.find_element_by_css_selector("#kw").send_keys("12306");
		driver.find_element_by_css_selector("#su1").click();
		
	def tearDown(self):
		self.driver.quit();
		self.assertEqual([],self.verificationErrors);
		
if __name__ == "__main__":
	unittest.main();

test_case.py代码

import os

caselist = os.listdir('D:\\unittest\\test_case\\')
for a in caselist:
	s=a.split('.')[-1]
	if s=='py':
		os.system('python D:\\unittest\\test_case\\%s 1>>log.txt 2>&1'%a)

caselist获取test_case目录下所有的文件列表做成列表 “baidu.py” 为列表的一个元素,用 split 以 " . " 分割为2个字符串,[-1]表示取出后面py的字符串,判断是否是测试用例文件。

如果是用os.system执行Dos命令,Dos命令为执行测试用例并把日志打印到log.txt至此,一个简单的单元自动化测试框架实现完毕
 

四、HTMLTestRunner报告

HTMLTestRunner是Python标准库的unittest模块的一个扩展。它能生成易于使用的HTML报告

1.下载HTMLTestRunner.py文件:地址为http://tungwaiyip.info/software/HTMLTestRunner.html

2.将该文件保存在python安装路径下的lib文件夹中。在文件中能importHTMLTestRunner成功,即配置成功

备注:如果失败,在项目中新建一个这样的文件也是可以的,只要达到能引入和使用就行

引入HTML报告后执行测试用例显示如下:
在这里插入图片描述
针对baidu.py修改如下

import HTMLTestRunner #导入HTMLTestRunner报告


if __name__ == "__main__":
suite = unittest.TestSuite(); #构建测试套件
suite.addTest(baidu("test_baidu_set")); #添加测试用例到套件
filename = 'D:\\unittest\\test_case\\result.html'; #建立HTML报告文件
fp = file(filename,'wb');
runner = HTMLTestRunner.HTMLTestRunner(stream=fp,title=u"百度知道测试报告",description=u"用例执行情况:"); #自定义测试报告
runner.run(suite); #运行测试用例

说明:使用HTMLTestRunner配置参数,stream为输出报告路径、title为报告标题、description为描述信息


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值