美文网首页
Python3:使用单元测试框架 unittest

Python3:使用单元测试框架 unittest

作者: Queenie的学习笔记 | 来源:发表于2019-12-03 15:43 被阅读0次
    1. 定义【测试类】 LoginCase
    2. 定义【测试测试方法】 testAdd、testMultiply等
    2.1 添加前置方法setUp(),例如所有的请求都用session管理,所有的用例都是基于登录后操作
    def setUp(self):      # 前置
            self.url = "http://www.kuaidi.com/index-ajaxselectcourierinfo-1202247993797-yunda.html"
            self.headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0"}  # get方法其它加个ser-Agent就可以了
    
            self.s = requests.session()
    
    2.2 添加后置方法tearDown(),例如做数据清理,只测新增草稿箱的功能
    def tearDown(self):
            # 后置处理,清理垃圾数据,不影响后续用例
            pass
    
    3. 做出【断言】 assertEqual(),一个用例中可以有多个检查点(断言)
    class LoginCase(unittest.TestCase):  #继承单元测试unittest.TestCase这个类
    
        def testAdd(self):  # 测试方法(用例)必须以test开头
            self.assertEqual((1 + 2), 3)
            self.assertEqual(0 + 1, 1)
            
        def testMultiply(self):  #测试方法(用例)必须以test开头
            self.assertEqual((0 * 10), 0)
            self.assertEqual((5 * 8), 40)
    
    if __name__ == '__main__':
        unittest.main()
    
    4. 用例的执行顺序

    4.1 按(assic码):0-9 ,A-Z, a-z顺序执行的(编写代码时,无需理会用例的代码行位置,用例是相互独立的,不要去依赖执行顺序)

    4.2 Pycharm中,单独执行某一条用例,将鼠标放置在该用例名称后,右击运行
    4.3 Pycharm中,要执行全部的用例,将鼠标放置在main函数后,右击运行

    5. 执行次数

    只执行一次前置,上面必须加@classmethod

    class Test1(unittest.TestCase):
        @classmethod  
        def setUpClass(cls):
            print("setUpClass初始化操作:用例开始前只执行一次")
    
        @classmethod
        def tearDownClass(cls):
            print("tearDownClass收尾清理操作:用例结束时候只执行一次")
    
        def setUp(self):
            print("setUp每次用例开始前都会执行!!!")
    
        def tearDown(self):
            print("tearDown每次用例结构都会执行!!!")
    
        def test_01(self):
            time.sleep(1)
            print("正在执行用例01")
    
        def test_02(self):
            time.sleep(1)
            print("正在执行用例02")
    
    if __name__ == "__main__":
        unittest.main()
    
    
    6. 项目结构
    图片.png
    7. 加载目录
    def all_case(case="testcase"):
        '''加载指定目录下的所有的用例'''
        # 待执行用例的目录
        case_dir = os.getcwd()+"\\"+case
        discover = unittest.defaultTestLoader.discover(case_dir,pattern="test*.py",top_level_dir=None)
    
        print discover
        return discover
    
    
    if __name__ == "__main__":
        # 返回实例
        runner = unittest.TextTestRunner()
        runner.run(all_case())
    
    8. HTML 报告

    8.1.下载HTMLTestRunner.py文件
    8.2.放到python2\Lib文件目录

    import unittest,HTMLTestRunner,os,time
    def all_case(case="testcase"):
        '''加载指定目录下的所有的用例'''
        # 待执行用例的目录
        case_dir = os.getcwd()+"\\"+case
        discover = unittest.defaultTestLoader.discover(case_dir,pattern="test*.py",top_level_dir=None)
    
        print discover
        return discover
    
    
    if __name__ == "__main__":
        report_path = os.getcwd()+"\\report\\"+time.strftime("%Y_%m_%d_%H_%M_%S")+".html"
    
        fp = open(report_path, "wb")
        runner = HTMLTestRunner.HTMLTestRunner(stream=fp, verbosity=2, title=u'这是接口自动化测试报告',description=u'用例执行情况:')
    
        runner.run(all_case())
        fp.close()
    

    相关文章

      网友评论

          本文标题:Python3:使用单元测试框架 unittest

          本文链接:https://www.haomeiwen.com/subject/jtqcgctx.html