IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> Python之使用unittest模块测试 -> 正文阅读

[开发测试]Python之使用unittest模块测试

1

#测试
def get_formatted_name_two(first, last, middle=''):
     """生成整洁的姓名"""
     full_name = f"{first} {middle} {last}"
     return full_name

def get_formatted_name_one(first, last):
     """生成整洁的姓名"""
     full_name = f"{first} {last}"
     return full_name

#改进版
def get_formatted_name_three(first, last, middle=''):
    """生成整洁的姓名"""
    if middle:
        full_name = f"{first} {middle} {last}"
    else:
        full_name = f"{first} {last}"
    return full_name.title()

2

#division为上面代码的模块名(文件名)
from division import get_formatted_name_one
from division import get_formatted_name_two

print("Enter 'q' at any time to quit.")
while True:
    first = input("\nPlease give me a first name:")
    if first == 'q':
        break
    last = input("\nPlease give me a last name:")
    if last == 'q':
        break

    formatted_name_one = get_formatted_name_one(first, last)
    print(f"\tNeatly formatted name: {formatted_name_one}")   

    formatted_name_two = get_formatted_name_two(first, last, middle='')
    print(f"\tNeatly formatted name: {formatted_name_two}")   

3

#为函数编写测试用例
#可先导入模块unittest和要测试的函数,解释器将在导入的同时执行它。
#再创建一个继承unittest.TestCase的类,并编写一系列方法函数行为的不同方面进行测试
#下面代码检查函数get_formatted_name()在给定名和姓时能否正确工作。
#unittest模块中的断言方法
#assertEqual(a,b)  核实 a == b
#assertNotEqual(a,b)  核实 a != b
#assertTure(x)  核实 x 为 True
#assertFlase(x)  核实 x 为 False
#assertIn(item, list)  核实 item 在 list 中
#assertNotIn(item, list)  核实 item 不在 list 中
import unittest
from division import get_formatted_name_two
from division import get_formatted_name_one
from division import get_formatted_name_three

#用于包含一系列针对get_formatted_name()的单元测试
class NameTestCase(unittest.TestCase):
    """测试division.py"""
    def test_first_last_name(self):
        """能够正确地处理像Janis Joplin这样的姓名吗?"""
        formatted_name_one = get_formatted_name_one('Janis', 'Joplin')
        formatted_name_tow = get_formatted_name_two('Janis', 'Joplin')
        formatted_name_three = get_formatted_name_three('Janis', 'Joplin')
        #unittest类的功能之一:断言方法
        #断言方法:核实得到的结果是否与期望的结果一致。
        self.assertEqual(formatted_name_one, 'Janis Joplin')
        #注意这里名字之间有默认的值,即middle=''。
        self.assertEqual(formatted_name_tow, 'Janis  Joplin')
        self.assertEqual(formatted_name_three, 'Janis Joplin')
  
    #添加新测试
    def test_first_last_middle_name(self):
        """能够正确地处理像Wolfgang Amadeus Mozart这样的姓名吗?"""
        formatted_name_three = get_formatted_name_three(
            'Wolfgang', 'Mozart', 'Amadeus')
        self.assertEqual(formatted_name_three, 'Wolfgang Amadeus Mozart')

if __name__ == '__main__':
    unittest.main()

4

#测试类,与函数相似
class AnonymousSurvey:
    """收集匿名调查问卷的答案"""
    def __init__(self,question):
        """存储一个问题,并为存储答案做准备"""
        self.question = question
        self.responses = []

    def show_question(self):
        """显示调查问卷"""
        print(self.question)

    def store_response(self, new_response):
        """存储单份调查答卷"""
        self.responses.append(new_response)

    def show_results(self):
        """显示收集到的所有答卷"""
        print("Survey results:")
        for response in self.responses:
            print(f"-{response}")

5

#为证明AnonymousSurvey类能正确工作,编写一个使用它的程序
from datetime import MAXYEAR
from alien_invasion import AnonymousSurvey

#定义一个问题,并创建一个调查
question = "What language did you first learn to speak?"
my_survey = AnonymousSurvey(question)

#显示问题并存储答案
my_survey.show_question()
print("Enter 'q' at any time to quit.\n")
while True:
    response = input("Language:")
    if response == 'q':
        break
    my_survey.store_response(response)

#显示调查结果
print("\nThank you to everyone who participated in the survey!")
my_survey.show_results()

6

#对AnonymousSurvey类的行为的一个方面进行测试
import unittest
from alien_invasion import AnonymousSurvey

class TestAnonymousSurvey(unittest.TestCase):
    """针对AnonymousSurvey类的测试"""
    def test_store_single_response(self):
        """测试单个答案会被妥善的存储"""
        question = "What language did you first learn to speak?"
        my_survey = AnonymousSurvey(question)
        my_survey.store_response('qq')
        self.assertIn('qq', my_survey.responses)

    def test_store_three_response(self):
        """测试三个答案会被妥善的存储"""
        question = "What language did you first learn to speak?"
        my_survey = AnonymousSurvey(question)
        responses = ['q', 'b', 'c']
        for response in responses:
            my_survey.store_response(response)

        for response in responses:
            self.assertIn(response, my_survey.responses)

if __name__ == '__main__':
    unittest.main()

7 基于方法setUp()

#funittest.TestCase类包含的方法setUp()
#不用每次测试都创建实例
import unittest
from alien_invasion import AnonymousSurvey

class TestAnonymousSurvey:
    """针对AnonymousSurvey类的测试"""

    def setUp(self):
        """创建一个调查对象和一组答案,供使用的测试方法使用"""
        question = "What language did you first learn to speak?"
        self.my_survey = AnonymousSurvey(question)
        self.responses = ['q', 'b', 'c']

    def test_store_single_response(self):
        """测试单个答案会被妥善的存储"""
        self.my_survey.store_response(self.responses[0])
        self.assertIn(self.responses[0], self.my_survey.responses)

    def test_store_three_response(self):
        """测试三个答案会被妥善的存储"""
        for response in self.responses:
            self.my_survey.store_response(response)

        for response in self.responses:
            self.assertIn(response, self.my_survey.responses)

if __name__ == '__main__':
    unittest.main()

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-11-27 10:12:06  更:2021-11-27 10:12:36 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 4:49:59-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码