04-11 实战方案一(下)unitest

测试开发 实战方案

实战方案一 unittest+ httprunner

引入

正文:

1 断言的增加

2 测试用例装载

class MoudleTestSuite():
    '''
    这是一个测试套件类,并且提供的可以使用的测试套件方法
    example: module.name +  api.name
          suiteAPI()
    example:

    '''

    def __init__(self,suite=None):
        self.suite = suite

    def suiteAPI(self):
        '''
        suite carete method: loadTestsFromTestCase
        :return suite
        '''
        self.suite = \
            unittest.TestLoader().loadTestsFromTestCase(test_baiduAPI.APITestCase)

        return self.suite


    def discoverysuiteAPI(self,filedir=None):
        '''
        suite carete method: discover
        :param filedir:
        :return: unittest.TestSuite()
        '''

        self.filedir = filedir

        self.suite = unittest.TestLoader().discover(
            start_dir=self.filedir, pattern='test*.py',top_level_dir=None)

        #  defaultTestLoader 是TestLoader() 的一个实例
        # self.suite = unittest.defaultTestLoader.discover(start_dir=self.filedir, pattern='test*.py',top_level_dir=None)
        return  self.suite

3 写出html测试报告文件

class GenerateReport():


    def __init__(self,suite):
        self.suite =suite


    def createreport(self) -> None:

        with (open(conf_common.reportobject["reportfilepath"], 'wb')) as fp:
            runner = HTMLTestRunner.HTMLTestRunner(
                stream=fp,
                verbosity= conf_common.reportobject["verbosity"],
                title=conf_common.reportobject["title"],
                description=conf_common.reportobject["description"]
            )

            runner.run(self.suite,)

4 htmltestrunner源码分析

The simplest way to use this is to invoke its main method. E.g.

    import unittest
    import HTMLTestRunner

    ... define your tests ...

    if __name__ == '__main__':
        HTMLTestRunner.main()


For more customization options, instantiates a HTMLTestRunner object.
HTMLTestRunner is a counterpart to unittest's TextTestRunner. E.g.

    # output to a file
    fp = file('my_report.html', 'wb')
    runner = HTMLTestRunner.HTMLTestRunner(
                stream=fp,
                title='My unit test',
                description='This demonstrates the report output by HTMLTestRunner.'
                )

    # Use an external stylesheet.
    # See the Template_mixin class for more customizable options
    runner.STYLESHEET_TMPL = '<link rel="stylesheet" href="my_stylesheet.css" type="text/css">'

    # run the test
    runner.run(my_test_suite)

这是源码里的用法。

我们采用的是定制的方法。

总结

1 项目很轻巧,只需要额外一个开源的py模块

2 代码行数位60行代码的项目

3 麻雀虽小,五脏俱全

posted @ 2019-10-20 13:34  小猿取经-林海峰老师  阅读(108)  评论(0)    收藏  举报