测开之路五十七:实现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报告

测开之路五十七:实现runner和测试报告的更多相关文章
- 测开之路五十三:unittest运行参数
Fixture:进行测试前的准备工作和测试后的清理操作.例如创建临时或是代理数据库,目录,服务进程等.用例(Case):最小的测试单元,检车特定输入的响应.TestCase作为所有用例的基类,测试ca ...
- 测开之路七十七:性能测试蓝图之js
//定义全局的editor = nullvar editor = null; //ace_editor的初始化函数function ace_editor() { var editor = ace.ed ...
- 测开之路五十五:实现类似于unittest查找case
实现给一个路径,去查找test开头的测试用例文件 创建一个计算器的类,方便后面测试用 class Calculator(object): def add(self, x, y): return x + ...
- 测开之路九十七:js的引用方式
第一种:引用外部js文件 准备一个js文件 <!-- 引用外部的js --><script src="../js/js01.js"></script& ...
- 测开之路八十七:HTML之a标签的用法
初始化的HTML结构为,只需要在body里面加网页的标签和要显示的内容即可 <!DOCTYPE html><html lang="en"><head& ...
- 测开之路七十七:shell之if、case、for、while
选择语句(if语句) 大于:-gt判断目录是否存在:-d if [ 判断条件 ]; then statement1 Statement2elif [ 判断条件 ]; then statement1 S ...
- 测开之路五十六:实现类似unittest的断言
import inspect class Case(object): """ 实现断言 """ def __init__(self): se ...
- 测开之路五十一:代码实现MongoDB增删改查
初始化时连接.析构时断开连接 from pymongo import MongoClient class Mogo(object): def __init__(self, host='127.0.0. ...
- 测开之路五十:monggodb安装与初步使用
mongodb下载地址:https://www.mongodb.com/download-center Robo3T下载地址:https://robomongo.org/ 安装mongodb 双击无脑 ...
随机推荐
- python pip报错pip._ vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out.
AttributeError: module 'pip' has no attribute 'main报错 找到安装目录下 helpers/packaging_tool.py文件,找到如下代码: de ...
- Ubuntu TTy字体
目的:修改tty终端下的字体大小,中文显示,字体美观问题 Linux版本:xubuntu14.04 当切换到tty终端模式式,中文乱码,且字体太小,影响阅读.在网上搜了一些资料,将问题及解决方案记录如 ...
- mybatis报错:org.apache.ibatis.builder.BuilderException:Encountered " "shr" "shr " " at line 1,column 1
程序报错如下: 解决:变量名冲突 表字段‘审核人’简称为shr,与mybatis的OGNL表达式发生冲突. 解决方法:修改冲突的变量名即可. 总结了一下变量命名可能发生冲突的变量集合: bor(字符| ...
- Cnblogs 的 MetaWeblog 的接口发生了变化
Cnblogs 的 MetaWeblog 的接口发生了变化 */--> Cnblogs 的 MetaWeblog 的接口发生了变化 最近把 emacs 重新配置了一下,把 cnblogs 包也重 ...
- Codeforces Round #574 (Div. 2) A~E Solution
A. Drinks Choosing 有 $n$ 个人,每个人各有一种最喜欢的饮料,但是买饮料的时候只能同一种的两个两个买(两个一对) 学校只打算卖 $\left \lceil \frac{n}{2} ...
- ActiveMQ的简单使用
项目中使用的介绍 一.运行ActiveMQ 在文件路径下...\apache-activemq-5.13.3\bin\win64 运行activemq.bat 这是系统中的使用,运行后还可以访问相应的 ...
- vue简单的v-for - - 路由跳转
前几天写了一个特特特简单的小图片页面,主要用到的就是v-for遍历以及路由跳转到详情页.路由跳转需要在router文件夹下index.js引入. 导航栏(element ui导航栏为模板): < ...
- es5和es6中的this指向问题
const test ={ id:2, a:function(){ var a_this=this; setTimeout(function(){ console.log('a:',this,a_th ...
- redis限流器的设计
1.定义注解 import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java. ...
- linux设置python虚拟环境的环境变量
针对 linux系统中 python虚拟环境 设置环境变量 2种方法: 1.在建好的虚拟环境的 venv/bin/active 文件中,写入需要的环境变量,再进入虚拟环境: 如 配置文件路径 JERR ...