项目结构

测试用例

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. ASIC加速技术原理与实践:从芯片设计到优化

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

  2. 楠少音乐盒(PC端)突破校园网限制

    楠少音乐盒 突破校园网限制 最近在将音乐盒从web迁移到PC端,过程中的记录 在我们学校,工作时间内(周一至周五为工作日,下午上班时间)校园网都会拦截一些与工作无关的网站,例如购物.炒股.游戏.音乐等 ...

  3. 微信小程序 - 视图与逻辑

    [黑马程序员前端微信小程序开发教程,微信小程序从基础到发布全流程_企业级商城实战(含uni-app项目多端部署)] https://www.bilibili.com/video/BV1834y1676 ...

  4. ChatGPT帮助工程师写代码:从功能模块完善到成功执行,实现需求

    在软件开发过程中,经常会遇到需要完善功能模块.调试代码和解决问题的情况.为了提高效率,我们可以借助人工智能技术,例如OpenAI的ChatGPT语言模型,来协助我们进行代码编写和调试.本文将介绍一个案 ...

  5. 【MAUI Blazor踩坑日记】5.macOS上的缩放比例

    macOS的页面默认比较小,原因貌似是因为符合iPad吧, 这个没啥好说的,看微软文档就可以了https://learn.microsoft.com/zh-cn/dotnet/maui/mac-cat ...

  6. 【go语言】1.1.1 Go 语言的历史和背景

    Go 语言,也被称为 Golang,是一种静态强类型.编译型的开源编程语言.Go 语言的出现是为了解决当下的软件开发问题,特别是大规模软件系统的开发. Go 语言的设计者包括 Robert Gries ...

  7. 洛谷 Luogu P1038 [NOIP2003 提高组] 神经网络

    这题看着很吓人实则很简单.求输出层,正着求很麻烦,因为知不道谁连向这个点,所以可以反向建边,反着求. 拓扑+dfs,时间复杂度 \(\text{O(n + m)}\) #include <ios ...

  8. 从源码角度了解Vue生命周期

    每个Vue应用都是通过new Vue()创建一个Vue实例开始.Vue()函数可以传入选项Options,常见的有el.template和data选项等. el 只在new创建实例时生效,其值可以是一 ...

  9. 质效提升 | QA不做业务需求测试,你怎么看?

    ​因为有的小伙伴看到公司的QA不测试业务需求,只搞流程.卡点.规范.技术创新.QA平台,行业洞察,让研发自测.研发担责上线bug和风险,所以问我,你怎么看QA不做业务需求测试这件事.其实我怎么看不重要 ...

  10. BUGKU逆向reverse 1-8题

    练习IDA两年半 打开尘封已久的bugku,从题目中练习使用,现在都已经是新版本了 orz 入门逆向 运行baby.exe将解压后的baby.exe拖到IDA里面主函数中找到mov指令 可以看到这里就 ...