zoukankan      html  css  js  c++  java
  • pytest文档1--简介及用例规则

    
    

    pytest简介

    
    

    pytest是python的一种单元测试框架,与python自带的unittest测试框架类似,但是比unittest框架使用起来更简洁,效率更高。根据pytest的官方网站介绍,它具有如下特点:

    
    
    • 非常容易上手,入门简单,文档丰富,文档中有很多实例可以参考
    • 能够支持简单的单元测试和复杂的功能测试
    • 支持参数化
    • 执行测试过程中可以将某些测试跳过(skip),或者对某些预期失败的case标记成失败
    • 支持重复执行(rerun)失败的case
    • 支持运行由nose, unittest编写的测试case
    • 可生成html报告
    • 方便的和持续集成工具jenkins集成
    • 可支持执行部分用例
    • 具有很多第三方插件,并且可以自定义扩展
    
    

    pytest用例规则

    • 测试文件以test_开头(以_test结尾也可以)
    • 测试类以Test开头,并且不能带有 __init__ 方法
    • 测试函数以test_开头
    • 断言使用assert

    示例代码

    # -*- coding:utf-8 -*-
    import unittest
    import requests
    from time import sleep
    import HTMLTestRunner
    
    # 构造WeatherTest类,继承unittest.TestCase
    class WeatherTest(unittest.TestCase):
        # 用例执行前的准备工作
        def setUp(self):
            self.url = 'http://t.weather.sojson.com/api/weather/city'
    
        # 定义测试guangzhou天气的方法
        def test_weather_handan(self):   # 用例方法需要以test开头,便于执行顺利
            '''
            Case01-正常存在的city_code值
            '''
            data = {'city_code':'101091001'}
            r = requests.get(self.url+'/'+data['city_code'])    # 拼接接口URL
            result = r.json()   # 将返回结果转换为json类型
    
            # 设置断言
            self.assertEqual(result['status'],200)  # 状态码
            self.assertEqual(result['message'],'Success !')
            self.assertEqual(result['cityInfo']['city'],'邯郸市')
            self.assertEqual(result['cityInfo']['cityId'],'101091001')
            sleep(3)    # 控制请求的间隔时间,防止过快请求而IP受限制
    
        def test_weather_param_error(self):
            '''
            Case02-错误的city_code值
            '''
            data = {'city_code':'666abc'}
            r = requests.get(self.url+'/'+data['city_code'])
            result = r.json()
    
            self.assertEqual(result['message'],'Request resource not found.')
            self.assertEqual(result['status'],404)
            sleep(3)
    
        def test_weather_param_non_existent(self):
            '''
            Case03-不存在的city_code值
            '''
            data = {'city_code':'123456789'}
            r = requests.get(self.url+'/'+data['city_code'])
            result = r.json()
    
            self.assertEqual(result['message'],'no_city_id')
            self.assertEqual(result['status'],403)
            sleep(3)
    
        def test_weather_no_param(self):
            '''
            Case04-不传入任何city_code值(空)
            '''
            data = {'city_code':''}
            r = requests.get(self.url+'/'+data['city_code'])
            result = r.json()
    
            self.assertEqual(result['message'],'Request resource not found.')
            self.assertEqual(result['status'],404)
            sleep(3)
    
    # 调试WeatherTest类
    if __name__ == '__main__':
        report_dir = r's.html'
        re_open=open(report_dir,'wb')
        suite=unittest.TestLoader().loadTestsFromTestCase(WeatherTest)
        runner=HTMLTestRunner.HTMLTestRunner(
            stream=re_open,
            title=u'天气接口测试报告',
            description=u'天气接口详情'
    
        )
        runner.run(suite)
  • 相关阅读:
    asp.net文件上传
    给图片添加水印效果图的函数(可以在图片上添加自己的版权和LOGO图片的水印)
    DataGrid实现tooltip功能
    DataList编辑、更新、取消、删除、分页(分页控件AspNetPager.dll)
    SQL Server 中千分位格式化输出[转载]
    利用ASP.NET的三种缓存提高站点性能
    带Checkbox的TreeView(一) 完美兼容IE、Firefox ,在js中添加了getCurrentNode(evt)方法,注册方法变为TreeView1.Attributes.Add("onclick", "CheckEvent
    带checkbox的TreeView(二)
    经典blog
    六类UML图
  • 原文地址:https://www.cnblogs.com/qiqi-yhq/p/12712909.html
Copyright © 2011-2022 走看看