unittest框架(自动化测试框架)

目录

测试固件

测试套件使用

构建测试套件

遍历文件夹测试用例discover

忽略指定测试用例

① 断言

② HTML报告的生成

③ 错误捕捉和异常截图

④ 数据驱动 ddt


测试固件

执行每一个测试用例都要执行这两个

  • 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中,和测试方法中的参数进行映射
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值