项目结构

测试用例

import unittest

class LoginTestCase(unittest.TestCase):

    def test_login_success(self):
self.assertEqual({'code': 200, 'msg': '登录成功'}, self.login('kobe', '666')) def test_login_fail(self):
self.assertEqual({'code': 201, 'msg': '账号或者密码不正确'}, self.login('kobe', '888')) def test_not_username(self):
self.assertEqual({'code': 201, 'msg': '账号不能为空'}, self.login('', '666')) def test_not_password(self):
self.assertEqual({'code': 201, 'msg': '密码不能为空'}, self.login('kobe', '')) def test_not_username_password(self):
self.assertEqual({'code': 201, 'msg': '账号和密码不能为空'}, self.login('', '')) def login(self, username, password):
if username == 'kobe' and password == '666':
return {'code': 200, 'msg': '登录成功'} if username == 'kobe' and username != '' and password != '666' and password != '':
return {'code': 201, 'msg': '账号或者密码不正确'} if username == 'kobe' and password == '':
return {'code': 201, 'msg': '密码不能为空'} if username == '' and password == '666':
return {'code': 201, 'msg': '账号不能为空'} if username == '' and password == '':
return {'code': 201, 'msg': '账号和密码不能为空'}

方法1:从类中加载所有的case

suite.addTest(loader.loadTestsFromTestCase(LoginTestCase))

from test_unittest import LoginTestCase

#创建测试套件对象
suite=unittest.TestSuite()
#创建加载器
loader=unittest.TestLoader()
#将测试用例加载到测试套件种
suite.addTest(loader.loadTestsFromTestCase(LoginTestCase)) #运行测试用例
#创建报告对象
br = BeautifulReport(suite)
test_name = '测试报告1.html' BASE_DIR = os.path.dirname(__file__)
print(BASE_DIR) REPORT_DIR = os.path.join(BASE_DIR, 'report')
print(REPORT_DIR) br.report(description='测试报告', filename=test_name, report_dir=REPORT_DIR)

方法2:从模块中加载所有的测试用例

suite.addTest(loader.loadTestsFromModule(test_unittest))

import test_unittest

# todo 创建测试套件对象
suite = unittest.TestSuite()
# todo 创建加载器
loader = unittest.TestLoader()
# todo 将测试用例加载到测试套件中
suite.addTest(loader.loadTestsFromModule(test_unittest))
# todo 运行测试用例
# todo 创建报告对象
br = BeautifulReport(suite)
test_name = '测试报告.html' BASE_DIR = os.path.dirname(__file__)
print(BASE_DIR) REPORT_DIR = os.path.join(BASE_DIR, 'report')
print(REPORT_DIR) br.report(description='测试报告', filename=test_name, report_dir=REPORT_DIR)

方法3:从文件夹中加载所有的测试用例

suite.addTest(loader.discover(r'D:\second_hand_car\unittest_work'))

#创建suite套件对象
suite=unittest.TestSuite()
#创建加载器
loader=unittest.TestLoader()
#将测试用例加载到测试套件中
suite.addTest(loader.discover(r'D:\second_hand_car\unittest_work'))
#创建报告对象
br=BeautifulReport(suite)
test_name = '测试报告2.html' BASE_DIR = os.path.dirname(__file__)
print(BASE_DIR) REPORT_DIR = os.path.join(BASE_DIR, 'report')
print(REPORT_DIR)
br.report(description='测试报告', filename=test_name, report_dir=REPORT_DIR)

测试报告

***关于报告存储

BASE_DIR=os.path.dirname(__file__):当前项目的根路径
BASE_DIR1=os.path.dirname(os.path.dirname(__file__)):当前项目的根路径的上一级目录
REPORT_DIR=os.path.join(BASE_DIR,'report'):项目目录下创建report包,用于存放测试报告,将report和项目根路径进行拼接,得到完整的包路径

项目结构

如果根目录和所拼接的包不存在,会自动生成所拼接的包

例如:当前report_dir目录不存在,用根目录和report_dir进行拼接,会生成report_dir包

REPORT_DIR = os.path.join(BASE_DIR, 'report_dir')
print(REPORT_DIR)

nittest单元测试框架—加载测试用例的3种方法以及测试报告存储管理的更多相关文章

  1. Python 中 unittest 框架加载测试用例的常用方法

    unittest 当中为我们提供了许多加载用例的方法,这里说下常用的两种方法...推荐使用第二种 第一种加载测试用例的方法:使用加载器加载两个模块 需要把所有的模块加载到套件中 那么就可以自动的运行所 ...

  2. js 动态加载事件的几种方法总结

    本篇文章主要是对js 动态加载事件的几种方法进行了详细的总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助   有些时候需要动态加载javascript事件的一些方法往往我们需要在 JS 中动态添 ...

  3. 加载 AssetBundle 的四种方法

    [加载 AssetBundle 的四种方法] 1.AssetBundle.LoadFromMemoryAsync(byte[] binary, uint crc = 0); 返回AssetBundle ...

  4. (一)JQuery动态加载js的三种方法

    Jquery动态加载js的三种方法如下: 第一种: $.getscript("test.js"); 例如: <script type="text/javascrip ...

  5. JavaScript实现判断图片是否加载完成的3种方法整理

    JavaScript实现判断图片是否加载完成的3种方法整理 有时候我们在前端开发工作中为了获取图片的信息,需要在图片加载完成后才可以正确的获取到图片的大小尺寸,并且执行相应的回调函数使图片产生某种显示 ...

  6. 【log4j2 加载配置文件】 加载配置文件的三种方法

    log4j 2读取的配置文件可以分为三类:src下的配置文件.绝对路径的配置文件.相对路径的配置文件. package com.herman.test; import java.io.File; im ...

  7. Java加载资源文件几种方法

    from: http://andyzhu.blog.51cto.com/4386758/775836/ import java.net.URL; import org.springframework. ...

  8. 异步加载js的三种方法

    js加载时间线 : 它是根据js出生的那一刻开始记录的一系列浏览器按照顺序做的事,形容的就是加载顺序,可以用来优化什么东西,理论基础,背下来. 1.创建Document对象,开始解析web页面.解析H ...

  9. jQuery页面加载初始化的3种方法

    jQuery 页面加载初始化的方法有3种 ,页面在加载的时候都会执行脚本,应该没什么区别,主要看习惯吧,本人觉得第二种方法最好,比较简洁. 第一种: $(document).ready(functio ...

  10. 用css3制作旋转加载动画的几种方法

    以WebKit为核心的浏览器,例如Safari和Chrome,对html5有着很好的支持,在移动平台中这两个浏览器对应的就是IOS和Android.最近在开发一个移动平台的web app,那么就有机会 ...

随机推荐

  1. 数据库中的可视化和探索性:MongoDB的数据可视化和探索性工具

    目录 1. 引言 2. 技术原理及概念 2.1 基本概念解释 2.2 技术原理介绍 2.3 相关技术比较 3. 实现步骤与流程 3.1 准备工作:环境配置与依赖安装 3.2 核心模块实现 3.3 集成 ...

  2. ASIC加速技术原理与实践:从芯片设计到优化

    目录 <ASIC加速技术原理与实践:从芯片设计到优化> 背景介绍: 随着数字电路技术的不断发展,ASIC(专门芯片)作为数字电路中的核心部分,逐渐成为芯片设计中的重要组成部分.ASIC加速 ...

  3. C# - ConcurrentDictionary 并发场景使用注意事项

    1 自身作为 Enumerable 的遍历 自身作为可遍历对象,键值对为元素进行遍历,是线程安全的,但不提供快照,遍历过程中集合产生变更会直接反馈至此次遍历过程中.但并不一定能够保障获取数据的过程中, ...

  4. Visual Studio Code调试和发布ASP.NET Core Web应用

    前言 上一篇文章主要讲了Visual Studio Code安装C#开发工具包并编写ASP.NET Core Web应用有兴趣的同学可以去看看,今天咱们主要是要讲讲如何在VS Code中调试和发布AS ...

  5. 字符串加密DES

    提前关于加密的方式,我目前知道的有MD5,DES等等.今天写一下使用DES的代码,方便下次使用. package mocha.framework.hrbase.rest.utils; import j ...

  6. python安装后pip用不了 cmd命令窗口提示:Did not provide a command

    遇到的问题: 解决方法: 首先,使用where pip找到我的pip的安装目录 其次,配置环境变量 环境变量已经配置,但是仍是使用的时候直接输入pip提示"Did not provide a ...

  7. python3 使用位图排序

    代码 from bitmap import BitMap a=[1,5,3,4,7,8,15,6,9] print(a) bm=BitMap(max(a)) #print(dir(bm)) print ...

  8. [gin]基于切片实现crud

    前言 代码参考自<Building Distributed Application in Gin> 需求:设计一个食谱相关的API,数据存放到切片中. 设计模型和API 模型 type R ...

  9. [db2]缓冲池管理

    简介 缓冲池指的是从硬盘读取表和索引数据时,数据库管理器分配的用于高速缓存这些表和索引数据的内存区域.每个数据库都必须具有至少一个缓冲池,创建数据库时会自动创建一个名为IBMDEFAULTBP的缓冲池 ...

  10. ctfshow--web入门--XXE

    ctfshow--web入门--XXE web373 源码 <?php error_reporting(0); libxml_disable_entity_loader(false); //允许 ...