zoukankan      html  css  js  c++  java
  • 测开之路五十七:实现runner和测试报告

    准备测试用例

    from fox.case import Case
    from src import Calculator


    class TestCalculator(Case):

    def setUp(self):
    self.calc = Calculator()
    print("setUp")

    def tearDown(self):
    print("tearDown")

    def test_add(self):
    result = self.calc.add(2, 3)
    self.assertEqual(result, 6, "测试加法。")
    print("test_add")

    def test_sub(self):
    result = self.calc.sub(2, 3)
    self.assertEqual(result, -1, "测试减法。")
    print("test_sub")

    def test_mul(self):
    result = self.calc.mul(2, 3)
    self.assertEqual(result, 6, "测试乘法。")
    print("test_mul")

    def test_div(self):
    result = self.calc.div(4, 2)
    self.assertEqual(result, 2, "测试除法。")
    print("test_div")


    if __name__ == '__main__':
    pass
    # main()

    生成报告,这里只完成了json格式的

    import json


    class Reporter(object):

    def __init__(self):
    pass

    def generate_report(self, results, format='console'):
    if format == 'json':
    self.json(results)
    elif format == 'html':
    self.html(results)
    elif format == 'xml':
    self.xml(results)
    else:
    self.console(results)

    def console(self, results):
    for result in results:
    print(result)

    def json(self, results):
    file = open("result.json", "w", encoding="utf-8")
    file.write(json.dumps(results))
    file.close()

    def html(self, results):
    pass

    def xml(self, results):
    pass

    runner

    from fox.discovery import Discovery  # 获取测试用例
    from fox.reporter import Reporter # 生成报告


    class Runner(object):

    def __init__(self):
    pass

    def run(self, path):
    results = []
    discovery = Discovery()
    cases = discovery.find_case_by_path(path)
    for case in cases:
    if 'method' not in case:
    continue
    for method in case['method']:
    if 'setUp' in case:
    case['setUp']() # 执行setUp
    method()
    if 'tearDown' in case:
    case['tearDown']() # 执行tearDown
    results.append(case['result']) # 保存结果
    reporter = Reporter()
    reporter.generate_report(results, 'json') # 生成json格式的报告


    if __name__ == '__main__':
    import os

    case_path = os.path.join(os.path.dirname(os.getcwd()), 'unit') # unit 文件夹
    print(case_path)
    runner = Runner()
    runner.run(case_path)

    json报告

     

  • 相关阅读:
    Robocopy进行大量迁移
    以日期为文件名
    office outlook 無法開啟 outlook 視窗
    Dell R420 RAID建立以及系统安装
    CentOS系统如何设置服务开机自动运行
    Win10系统怎样让打开图片方式为照片查看器
    Download Software Top 10
    CentOS 5.11安装配置LAMP服务器(Apache+PHP5+MySQL)
    建模时,什么时候用值对象,什么时候用子表
    缓存穿透、缓存雪崩、缓存击穿的概念和解决方案
  • 原文地址:https://www.cnblogs.com/zhongyehai/p/11087377.html
Copyright © 2011-2022 走看看