目录
测试固件
执行每一个测试用例都要执行这两个
- setUp() 初始化测试环境的工作
- tearDown() 清理环境的操作
测试套件使用
把不同测试脚本,不同类中的测试用例组织起来,放到一个测试套件中执行
脚本中定义一个类,继承 unittest.TestCase
构建测试套件
- addTest()
- makeSuite() 把一个类中所有的测试用例都添加到一个测试套件中
- TestLoader().loadTestsFromTestCase(xxxx.xx)
def creatSuit():
suit = unittest.TestSuite()
suit.addTest(xxxxx.xx("xxx"))
suit.addTest(xxxxx.xx("xxx"))
suit.addTest(xxxxx.xx("xxx"))
return suit
if __name__ == '__main__':
suit = createSuit()
# verbosity = 0, 1, 2 结果显示细节程度
runner = unittest.TextTestRunner(verbosity=2)
runner.run(suit)
遍历文件夹测试用例discover
把文件夹下的所有固定命名格式命名的文件中的测试用例都加载到测试套件中
discover = unittest.defaultTestLoader.discover("../xxxxx", pattern="xxxxx*.py", top_level_dir=None)
return discover
忽略指定测试用例
# 在该用例方法前
@unittest.skip("skipping")
① 断言
- assertEqual( "预期结果", 实际结果, msg="异常输出")
- AssertNotEqual( "预期结果", 实际结果, msg="异常输出")
- assertTrue( "预期结果" == 实际结果, msg="异常输出")
- assertFalse( "预期结果" == 实际结果, msg="异常输出")
② HTML报告的生成
将HTMLTestRunner.py文件放入安装Python中的Lib文件夹
创建生成报告的文件夹
if __name__=="__main__":
curpath=sys.path[0]
# 创建报告文件夹
if not os.path.exists(curpath+'/resultreport'):
os.makedirs(curpath+'/resultreport')
# 取当前时间
now=time.strftime("%Y-%m-%d-%H %M %S",time.localtime(time.time()))
# 文件命名
filename=curpath+'/resultreport/'+now+'resultreport.html'
#出html报告
with open(filename,'wb') as fp:
runner=HTMLTestRunner.HTMLTestRunner(stream=fp,title=u'测试报告',description=u'用例执行情况',verbosity=2)
suite=createsuite()
runner.run(suite)
③ 错误捕捉和异常截图
self.saveScreenAsPhoto(driver, "xxxxx.png")
def savescreenshot(self,driver,file_name):
# 创建保存截图的文件夹
if not os.path.exists('./image'):
os.makedirs('./image')
now=time.strftime("%Y%m%d-%H%M%S",time.localtime(time.time()))
#截图保存
driver.get_screenshot_as_file('./image/'+now+'-'+file_name)
time.sleep(1)
④ 数据驱动 ddt
用数据驱动一个测试用例去不断的运行,直到所有的测试数据都执行完
安装数据驱动ddt包:pip install ddt
用本地已有文件进行读入,依次执行即可。
@data # 支持一个或者多个数据的传入
@unpack # 多个数据传入需要对一组数据进行映射,一次性传入两个或多个需要unpack
@file_data # 测试数据在json中,和测试方法中的参数进行映射