2017国家公务员考试行测备考:如何采用对代码进行测试

2023-06-09 918阅读 0评论
小熊猫权益

温馨提示:这篇文章已超过532天没有更新,请注意相关的内容是否还可用!

php问卷源码_php问卷源码_php网上调查问卷源码

测试函数

首先是给出用于测试的代码,如下所示,这是一个接收姓和名之后返回整洁的姓名的函数:

def get_formatted_name(first, last):
    full_name = first + ' ' + last
    return full_name.title()

简单的测试代码:

first = 'kobe'
last = 'bryant'
print(get_formatted_name(first, last)) # 输出 Kobe Bryant
复制代码

在标准库中的组件提供了代码检测软件。这里介绍几个名词的意思:

一般,最初只必须对函数的重要行为编写测试即可,等项目被广泛使用时才考虑全覆盖。

php问卷源码_php网上调查问卷源码_php问卷源码

接出来就开始介绍如何运用对代码进行检测。

首先是必须导出模块,然后建立一个继承.的类,并编写一系列类方式对函数的不同行为进行检测,如下代码所示:

import unittest
class NamesTestCase(unittest.TestCase):
    '''
    测试生成名字函数的类
    '''
    def test_first_last_name(self):
        formatted_name = get_formatted_name('kobe', 'bryant')
        self.assertEqual(formatted_name, 'Kobe Bryant')
        
unittest.main()

输出结果如下,显示运行的检测样例是1个,耗时是0.001s。

.
----------------------------------------------------------------------
Ran 1 test in 0.001s
OK

上述是给了一个可以借助的事例,而即使测试不借助php问卷源码,输出是如何的呢,如下所示:

# 添加中间名
def get_formatted_name(first, middel, last):
    full_name = first + ' ' + middle + ' ' + last
    return full_name.title()
class NamesTestCase(unittest.TestCase):
    '''
    测试生成名字函数的类
    '''
	# 不能通过的例子
    def test_first_name(self):
        formatted_name = get_formatted_name('kobe', 'bryant')
        self.assertEqual(formatted_name, 'Kobe Bryant')
                
unittest.main()

php问卷源码_php网上调查问卷源码_php问卷源码

输出结果如下,这里会打印错误出现的地方和出错原因:

E
======================================================================
ERROR: test_first_last_middle_name (__main__.NamesTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "E:/Python_Notes/Practise/unittest_practise.py", line 39, in test_first_last_middle_name
    formatted_name = get_formatted_name('kobe', 'bryant')
TypeError: get_formatted_name() missing 1 required positional argument: 'middle'
----------------------------------------------------------------------
Ran 1 test in 0.001s
FAILED (errors=1)

很显著是由于缺乏参数,如果期望借助测试,可以将原函数进行如下设置:

def get_formatted_name(first, last, middle=''):
    '''
    接收姓和名然后返回完整的姓名
    :param first:
    :param last:
    :return:
    '''
    if middle:
        full_name = first + ' ' + middle + ' ' + last
    else:
        full_name = first + ' ' + last
    return full_name.title()

之后添加新的检测方式,继续运行,就可以测试通过。

def test_first_last_middle_name(self):
    formatted_name = get_formatted_name('kobe', 'bryant', 'snake')
    self.assertEqual(formatted_name, 'Kobe Snake Bryant')

测试类

php问卷源码_php问卷源码_php网上调查问卷源码

上一小节介绍了给变量写测试的代码,接出来介绍如何编写针对类的检测。

断言方法

在.类中提供了这些断言方式,上一小节就采用了这一个判定给定两个参数是否相同的断定方法,下面给出常见的6个断言方式:

php问卷源码_php网上调查问卷源码_php问卷源码

这种方式都没法在继承了.的类中使用这种方式。

编写针对类的检测

首先,编写用于进行检测的类,代码如下所示,这是一个用于管理匿名调查问卷答案的类:

php问卷源码_php网上调查问卷源码_php问卷源码

class AnonymousSurvey():
    '''
    收集匿名调查问卷的答案
    '''
    def __init__(self, question):
        '''
        :param question:
        '''
        self.question = question
        self.responses = []
    
    def show_question(self):
        '''
        显示问卷
        :return: 
        '''
        print(self.question)
    
    def store_response(self, new_response):
        '''
        存储单份调查问卷
        :param new_response: 
        :return: 
        '''
        self.responses.append(new_response)
    
    def show_results(self):
        '''
        显示所有答卷
        :return: 
        '''
        print('Survey results:')
        for response in self.responses:
            print('- ' + response)

这个类包括三个步骤,分别是显示难题、存储单份问卷以及展现所有调查问卷,下面是一个使用实例:

def use_anonymous_survey():
    question = "世上最好的语言是?"
    language_survey = AnonymousSurvey(question)
    # 显示问题
    language_survey.show_question()
    # 添加问卷
    language_survey.store_response('php')
    language_survey.store_response('python')
    language_survey.store_response('c++')
    language_survey.store_response('java')
    language_survey.store_response('go')
    # 展示所有问卷
    language_survey.show_results()
if __name__ == '__main__':
    use_anonymous_survey()

输出结果如下:

世上最好的语言是?
Survey results:
- php
- python
- c++
- java
- go

后来就开始编写对该类的检测代码,同样建立一个类,继承.,然后类方式进行检测,代码如下所示:

import unittest
class TestAnonmyousSurvey(unittest.TestCase):
    def test_store_single_response(self):
        '''
        测试保存单份问卷的方法
        :return:
        '''
        question = "世上最好的语言是?"
        language_survey = AnonymousSurvey(question)
        language_survey.store_response('php')
        self.assertIn('php', language_survey.responses)
unittest.main()

php网上调查问卷源码_php问卷源码_php问卷源码

上述代码引入了推测手段来检测变量()。

此处还可以再次检测是否存储更多的问卷,如下所示,测试存储三份问卷:

 def test_store_three_response(self):
     question = "世上最好的语言是?"
     language_survey = AnonymousSurvey(question)
     responses = ['c++', 'php', 'python']
     for response in responses:
     	language_survey.store_response(response)
    for response in responses:
    	self.assertIn(response, language_survey.responses)

最终,在.中虽然包括一个方式setUp(),它的作用类似类的初始化方式()__php问卷源码,它会在诸多以test_开头的方式运行前先运行,所以可以在这个方式里建立对象,避免在每个检测方式都必须创建一遍,所以上述代码可以设置为:

class TestAnonmyousSurvey(unittest.TestCase):
    def setUp(self):
        '''
        创建一个调查对象和一组答案
        :return:
        '''
        question = "世上最好的语言是?"
        self.language_survey = AnonymousSurvey(question)
        self.responses = ['c++', 'php', 'python']
    def test_store_single_response(self):
        '''
        测试保存单份问卷的方法
        :return:
        '''
        self.language_survey.store_response(self.responses[1])
        self.assertIn('php', self.language_survey.responses)
    def test_store_three_response(self):
        for response in self.responses:
            self.language_survey.store_response(response)
        for response in self.responses:
            self.assertIn(response, self.language_survey.responses)

运行后,输出结果如下:

..
----------------------------------------------------------------------
Ran 2 tests in 0.000s
OK

注意,这里运行顺利,打印一个句号,因为是运行两个检测方式顺利,所以打印了两个句号;即使运行错误,打印一个E;检测避免断言失败,打印一个F。

关注+转发。私信小编“零基础”获取全套零基础资料大礼包。

本文来自网络,如有侵权请联系网站客服进行删除

2017国家公务员考试行测备考:如何采用对代码进行测试  您阅读本篇文章共花了: 

  • 1.注意:本站资源多为网络收集,如涉及版权问题请及时与站长联系,我们会在第一时间内删除资源。
  • 2.您购买的只是资源,不提供解答疑问和安装服务。免费源码里的接口不保证一直可以用
  • 3.本站用户发帖仅代表本站用户个人观点,并不代表本站赞同其观点和对其真实性负责。
  • 4.本站资源大多存储在云盘,如发现链接失效,请及时与站长联系,我们会第一时间更新。
  • 5.转载本网站任何内容,请按照转载方式正确书写本站原文地址
  • 6.如果发现侵权可以联系站长删除,站长vx:xiaoxiongmao0504或者邮箱通知3326096692@qq.com
  • 小熊猫权益

    发表评论

    快捷回复: 表情:
    评论列表 (暂无评论,918人围观)

    还没有评论,来说两句吧...

    目录[+]

    取消
    微信二维码
    微信二维码
    支付宝二维码
    请先 登录 再评论,若不是会员请先 注册