当前位置: 首页 > news >正文

长沙设计网站排名域名查询官网

长沙设计网站排名,域名查询官网,安徽鑫华建设有限公司网站,武汉设计公司推荐Unittest Unittest是Python的标准测试库,无需额外安装,是目前Python使用较为官方的测试框架。下面通过实例,一步一步了解如何使用Unittest。 待测试代码如下,用于验证email和密码。 # -*- coding: utf-8 -*-import reclass CheckU…

Unittest

Unittest是Python的标准测试库,无需额外安装,是目前Python使用较为官方的测试框架。下面通过实例,一步一步了解如何使用Unittest。

待测试代码如下,用于验证email和密码。

# -*- coding: utf-8 -*-import reclass CheckUserInfo: def check_mail(self, mail): flag = False str = '^[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+){0,4}@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+){0,4}$' if re.match(str, mail): flag = True return flag def check_pwd_len(self, pwd): '''密码长度不超过8位''' return len(pwd)>=8 def check_pwd_contain_leter(self, pwd): '''密码包含大小写英文字母''' flag = False pattern = re.compile('[A-Z][a-z]+') match = pattern.findall(pwd) if match: flag = True return flag def check_pwd_contain_num(self, pwd): '''密码包含数字''' flag = False pattern = re.compile('[0-9]+') match = pattern.findall(pwd) if match: flag = True return flag

 

TestCase — 单元测试用例

对上面代码中的每个方法进行测试,就需要实现一个继承unittest.TestCase 测试用例类。

# -*- coding: utf-8 -*-import unittestfrom com.unit_test.check_user_info import CheckUserInfoclass CheckUserInfoTestCase(unittest.TestCase): def __init__(self, *args, **kwargs): super(CheckUserInfoTestCase, self).__init__(*args, **kwargs) self.check_user_info = CheckUserInfo() @classmethod def setUpClass(cls): print('setUpClass\n\n') @classmethod def tearDownClass(cls): print('tearDownClass') def setUp(self): print('setUp') def tearDown(self): print('tearDown\n') def test_check_mail(self): print('test_check_mail') self.assertEqual(True, self.check_user_info.check_mail('aa@bb')) self.assertEqual(False, self.check_user_info.check_mail('aa.bb')) def test_check_pwd_len(self): print('test_check_pwd_len') self.assertEqual(True, self.check_user_info.check_pwd_len('12345678')) self.assertEqual(False, self.check_user_info.check_pwd_len('')) self.assertEqual(False, self.check_user_info.check_pwd_len('1')) self.assertEqual(True, self.check_user_info.check_pwd_len('123456789')) def test_check_pwd_contain_letter(self): print('test_check_pwd_contain_leter') self.assertEqual(True, self.check_user_info.check_pwd_contain_leter('1qazXSW@')) self.assertEqual(False, self.check_user_info.check_pwd_contain_leter('12345678')) self.assertEqual(False, self.check_user_info.check_pwd_contain_leter('')) def test_check_pwd_contain_num(self): print('test_check_pwd_contain_num') self.assertEqual(True, self.check_user_info.check_pwd_contain_num('1qazXSW@')) self.assertEqual(False, self.check_user_info.check_pwd_contain_num('qwertasdfg')) self.assertEqual(False, self.check_user_info.check_pwd_contain_num('')) def aaa(self): print('test_check_pwd_contain_num') self.assertEqual(True, self.check_user_info.check_pwd_contain_num('1qazXSW@')) if __name__ == '__main__': unittest.main()

 

执行结果如下:

...
setUpClasssetUp
test_check_mail
tearDownsetUp
test_check_pwd_contain_leter
tearDownsetUp
test_check_pwd_contain_num
tearDownsetUp
test_check_pwd_len
tearDowntearDownClassRan 4 tests in 0.013sOKProcess finished with exit code 0

 

使用“unittest.main()”,通过观察上面的测试代码以及执行结果,可以发现:

testXXX方法

使用“unittest.main()”执行测试用例时,每个测试方法必须以“test”开头,否则Unittes无法识别。例如,上面代码中的“aaa”方法未执行。

测试方法执行顺序

每个测试方法执行顺序并不是按照代码的书写顺序执行,而是按照前缀“test”后的字母顺序执行的。

setUp()方法

setUp()方法一般用来准备测试环境,在每个测试方法执行之前执行。

tearDown()方法

tearDown()方法一般用来清理测试环境,在每个测试方法执行之后执行,且不论测试方法执行是否成功。

setUpClass()方法

setUpClass()方法一般用来在所有测试方法执行之前准备一次测试环境,必须使用“@classmethod”装饰符,在所有测试方法执行前执行。

tearDownClass()

tearDownClass()方法一般用来在所有测试方法结束之后清理一次测试环境,必须使用“@classmethod”装饰符,在所有测试方法都执行完成否执行。

skip装饰器

不希望执行某个测试方法时,可以使用skip装饰器。skip装饰器共有三种:unittest.skip(reason)、unittest.skipIf(condition, reason)、unittest.skipUnless(condition, reason)。

  • unittest.skip(reason):无条件跳过
# -*- coding: utf-8 -*-import unittestfrom com.unit_test.check_user_info import CheckUserInfoclass CheckUserInfoTestCase(unittest.TestCase): ...... @unittest.skip('skip test_bbb method') def test_bbb(self): print('test_bbb') ......

 

部分执行结果如下:

...
Skipped: skip test_bbb method
...

 

  • unittest.skipIf(condition, reason):当condition为True时跳过
# -*- coding: utf-8 -*-import unittestfrom com.unit_test.check_user_info import CheckUserInfoclass CheckUserInfoTestCase(unittest.TestCase): ...... @unittest.skipIf(1<2, 'skip test_ccc method') def test_ccc(self): print('test_ccc') ......

 

 

部分执行结果如下:

...
Skipped: skip test_ccc method
...

 

  • unittest.skipUnless(condition, reason):当condition为False时跳过
# -*- coding: utf-8 -*-import unittestfrom com.unit_test.check_user_info import CheckUserInfoclass CheckUserInfoTestCase(unittest.TestCase): ...... @unittest.skipUnless(1>2, 'skip test_ddd method') def test_ddd(self): print('test_ddd') ......

 

部分执行结果如下:

...
Skipped: skip test_ddd method
...

 

那么,如何控制测试方法的执行顺序呢?如何执行非“test”开头的测试方法?接下来了解一下TestSuite。

TestSuite — 单元测试用例合集

通过上面的测试用例代码,可以发现无法指定测试方法的顺序。那么通过unittest.TestSuite,就可以按照业务逻辑顺序执行测试方法。

# -*- coding: utf-8 -*-import unittestfrom com.unit_test.check_user_info_test_case import CheckUserInfoTestCaseif __name__ == '__main__': suite = unittest.TestSuite() tests = [ CheckUserInfoTestCase('test_check_mail'), CheckUserInfoTestCase('test_check_pwd_len'), CheckUserInfoTestCase('test_check_pwd_contain_letter'), CheckUserInfoTestCase('test_check_pwd_contain_num') ] suite.addTests(tests) runner = unittest.TextTestRunner() runner.run(suite)

 

执行结果如下:

...
Ran 4 tests in 0.002sOK
setUpClasssetUp
test_check_mail
tearDownsetUp
test_check_pwd_len
tearDownsetUp
test_check_pwd_contain_leter
tearDownsetUp
test_check_pwd_contain_num
tearDowntearDownClassProcess finished with exit code 0

 

通过数组指定测试方法的执行顺序

tests = [CheckUserInfoTestCase('test_check_mail'),CheckUserInfoTestCase('test_check_pwd_len'),CheckUserInfoTestCase('test_check_pwd_contain_letter'),CheckUserInfoTestCase('test_check_pwd_contain_num')
]
suite.addTests(tests)

 

通过addTests()方法指定测试方法的执行顺序

suite.addTest(CheckUserInfoTestCase('test_check_mail'))
suite.addTest(CheckUserInfoTestCase('test_check_pwd_len'))
suite.addTest(CheckUserInfoTestCase('test_check_pwd_contain_letter'))
suite.addTest(CheckUserInfoTestCase('test_check_pwd_contain_num'))

 

无法指定测试方法执行顺序的unittest.TestLoader()

通过unittest.TestLoader()加载TestCase,测试方法是按照前缀“test”后的字母顺序执行的。

suite.addTests(unittest.TestLoader().loadTestsFromTestCase(CheckUserInfoTestCase))

执行非“test”开头的测试方法

在TestCase中的示例代码中,可以看到,测试方法名不是以“test”开头时是不会被执行的。那么,通过TestSuite就可以完美解决这个问题。

suite.addTest(CheckUserInfoTestCase('aaa'))


转载于:https://www.cnblogs.com/Rvin/p/9272023.html

http://www.lbrq.cn/news/2513719.html

相关文章:

  • 网站开发 安全合同seo网络优化前景怎么样
  • 台州网络建站模板平面设计培训
  • 鄂州网站制作哪家好广州百度seo优化排名
  • 英铭网站建设网站推广广告
  • web网站开发标题字体加粗百度快速收录工具
  • 网站建设分配人员方案营业推广是什么意思
  • 做网站都要买服务器吗广告网
  • 运维难还是开发难免费网站seo诊断
  • 有没有做海报的网站推荐泉州seo优化
  • 建材建设网站google海外版
  • php站点搭建短视频推广app
  • 上海建设网站定做网站创建的流程是什么
  • 在线网站设计关键词分布中对seo有危害的
  • 合肥做网站价格北京seo优化排名
  • 牛b插网站建设网站推广计划方案
  • 专业的网页设计和网站制作公司凡科建站官网免费注册
  • 黄骅海边旅游景区推广关键词优化
  • 在线网站建设培训免费推广网站大全下载
  • 好看的网站页面设计seocms
  • 长沙做个网站多少钱域名关键词查询
  • 礼品网站建设平台推广引流
  • 网站权重什么意思站长工具排行榜
  • 代练中介网站有得做吗腾讯中国联通
  • 学校网站的图片轮播怎么做北京互联网公司有哪些
  • 为什么打不开建设银行网站成都网络推广外包公司哪家好
  • 广西seo网站seo研究中心晴天
  • 网站建设与维护教学视频沈阳网站建设
  • 竭诚网络网站建设价格谷歌seo优化推广
  • 企业建设电子商务网站的预期收益本地网络seo公司
  • 网站免费php空间申请刚刚刚刚刚刚好痛
  • Kafka——消费者组重平衡全流程解析
  • 基于变频与移相混合控制(PFM+PSM)的全桥LLC谐振变换器仿真模型
  • ERC20 和 XCM Precompile|详解背后技术逻辑
  • 博士申请 | 荷兰阿姆斯特丹大学 招收计算机视觉(CV)方向 全奖博士生
  • 内存分页机制分析在海外VPS系统的测试流程
  • C语言:20250728学习(指针)