准备测试用例

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报告

测开之路五十七:实现runner和测试报告的更多相关文章

  1. 测开之路五十三:unittest运行参数

    Fixture:进行测试前的准备工作和测试后的清理操作.例如创建临时或是代理数据库,目录,服务进程等.用例(Case):最小的测试单元,检车特定输入的响应.TestCase作为所有用例的基类,测试ca ...

  2. 测开之路七十七:性能测试蓝图之js

    //定义全局的editor = nullvar editor = null; //ace_editor的初始化函数function ace_editor() { var editor = ace.ed ...

  3. 测开之路五十五:实现类似于unittest查找case

    实现给一个路径,去查找test开头的测试用例文件 创建一个计算器的类,方便后面测试用 class Calculator(object): def add(self, x, y): return x + ...

  4. 测开之路九十七:js的引用方式

    第一种:引用外部js文件 准备一个js文件 <!-- 引用外部的js --><script src="../js/js01.js"></script& ...

  5. 测开之路八十七:HTML之a标签的用法

    初始化的HTML结构为,只需要在body里面加网页的标签和要显示的内容即可 <!DOCTYPE html><html lang="en"><head& ...

  6. 测开之路七十七:shell之if、case、for、while

    选择语句(if语句) 大于:-gt判断目录是否存在:-d if [ 判断条件 ]; then statement1 Statement2elif [ 判断条件 ]; then statement1 S ...

  7. 测开之路五十六:实现类似unittest的断言

    import inspect class Case(object): """ 实现断言 """ def __init__(self): se ...

  8. 测开之路五十一:代码实现MongoDB增删改查

    初始化时连接.析构时断开连接 from pymongo import MongoClient class Mogo(object): def __init__(self, host='127.0.0. ...

  9. 测开之路五十:monggodb安装与初步使用

    mongodb下载地址:https://www.mongodb.com/download-center Robo3T下载地址:https://robomongo.org/ 安装mongodb 双击无脑 ...

随机推荐

  1. 跨平台自动构建工具v1.0.2 发布

    XMake是一个跨平台自动构建工具,支持在各种主流平台上构建项目,类似cmake.automake.premake,但是更加的方便易用,工程描述语法更简洁直观,支持平台更多,并且集创建.配置.编译.打 ...

  2. python操作mysql之增删改查

    [insert] import MySQLdb conn = MySQLdb.connect(","08day5" ) cur = conn.cursor() #把数据放 ...

  3. php和java的优势

    现在市场上的电子商务软件基本上可归结为两大阵营,即PHP阵营和Java阵营.但对接触电子商务不久的用户来说,看到的往往只是它们的表相,只是明显的价格差异,却很难看出它们之间的实际差异.下面我们就为大家 ...

  4. JavaScript List

    function List() {    this.listSize = 0;    this.pos = 0;    this.dataSource = [];    this.clear = fu ...

  5. 《JAVA设计模式》之备忘录模式(Memento)

    在阎宏博士的<JAVA与模式>一书中开头是这样描述备忘录(Memento)模式的: 备忘录模式又叫做快照模式(Snapshot Pattern)或Token模式,是对象的行为模式. 备忘录 ...

  6. [Linux] 026 光盘 yum 源搭建

    光盘 yum 搭建步骤 (1) 挂载光盘 $ mount /dev/cdrom /mnt/cdrom/ (2) 让网络 yum 源文件失效 $ cd /etc/yum.repos.d/ $ mv Ce ...

  7. vmware 15安装centos 7.6

    环境: Vmware 15 centos 7.6.1810(CentOS-7-x86_64-DVD-1810.iso) centos:centos是linux发行版之一,开源,免费,安装的iso可以向 ...

  8. 攻防世界--no-strings-attached

    测试文件:https://adworld.xctf.org.cn/media/task/attachments/5d4117b968684b9483d0d4464e0a6fea 这道题要使用到gdb文 ...

  9. activiti 5.22 表结构解析及清空流程运行测试数据

    1.结构设计 1.1.    逻辑结构设计 Activiti使用到的表都是ACT_开头的. ACT_RE_*: 'RE'表示repository(存储),RepositoryService接口所操作的 ...

  10. ffmpeg音频文件转换之使用stdin/stdout或BytesIO对象输入输出

    最近在搞小程序录音,然后使用百度接口做语音识别. 小程序目前仅支持mp3和aac编码格式.虽然百度接口提供的m4a格式支持能直接识别小程序的录音文件,但由于自己还有其他一系列需求(比如直接读取数据,根 ...