postman
安装Newman 先安装node.js,把npm添加到环境变量中。
npm install newman --registry=https://registry.npm.taobao.org
newman run 拉钩网.postman_collection.json newman-reporter-html
login登录成功后是不是代表业务流程是对的?
不是,只是代表login的接口是对的。
接口测试的维度:
1.请求参数的边界值
2.请求参数为空
3.请求参数数据类型
4.请求&响应时间的验证
5.基本的业务流程,业务流程ok,前后端业务场景测试ok
不需要单独的验证数据库的数据是否正确
因为客户端向服务端发起请求获取数据,服务端链接到数据库,写SQL语句,然后返回需要的内容给客户端
500万请求数据,怎么断言数据,服务器会链接SQL语句,把消费的金额进行累计进行断言。
公司的要求:
1.发展业务价值
2.更短的上线时间
3.更好的软件质量
4.更少的资源投入
5.关注用户的行为
6.倡导零缺陷,做有价值的事
单元测试unittest
测试用例 -->testcases
测试固件 -->准备工作和收尾工作
测试套件 testsuite-->测试用例集合
测试执行 testrunner-->测试用例test执行
测试断言 -->期望结果是断言,实际结果
测试报告 testreport-->测试用例生成报告
测试策略
本轮测试版本,测试场景,回归问题,新增需求等进行测试
小牛试刀
class Test():
    def __init__(self,a,b):
        self.a = a
        self.b = b
    def add(self):
        return self.a + self.b
test = Test(5,6)
print(test.add())
测试固件
import unittest
class Test(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        print('前置准备ok')
    # def setUp(self):
    #     print('前置准备ok')
    def test1(self):
        print('TestCase1')
    def test02(self):
        print('TestCase2')
    @classmethod
    def tearDownClass(cls):
        print('收尾工作ok')
    # def tearDown(self):
    #     print('收尾工作ok')
if __name__ == '__main__':
    unittest.main(verbosity=2)
测试固件 setUpClass & teardownclass 只执行一次前置和收尾工作
import unittest
from selenium import webdriver
class Baidu(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        cls.driver = webdriver.Chrome()
        cls.driver.get('https://www.baidu.com')
        cls.driver.implicitly_wait(10)
        cls.driver.maximize_window()
    @classmethod
    def tearDownClass(cls):
        cls.driver.quit()
    def test_baidu_news(self):
        """百度链接测试:验证hao123链接测试"""
        self.driver.find_element_by_link_text('hao123').click()
        self.assertEqual(self.driver.current_url,'https://www.hao123.com/')
    def test_baidu_map(self):
        """百度链接测试:验证地图链接测试"""
        self.driver.find_element_by_link_text('地图').click()
        self.assertEqual(self.driver.title,'百度地图')
        self.driver.back()
if __name__ == '__main__':
    unittest.main(verbosity=2)
测试套件 -->测试用例的集合
addtest -->让用例有顺序的执行
测试用例执行顺序 addtest 添加&删除用户举例
按测试类来执行 makeSuite()
加载测试类 testloader
按照测试模块来执行
import unittest
from selenium import webdriver
class Baidu(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        cls.driver = webdriver.Chrome()
        cls.driver.get('https://www.baidu.com')
        cls.driver.implicitly_wait(10)
        cls.driver.maximize_window()
    @classmethod
    def tearDownClass(cls):
        cls.driver.quit()
    def test_baidu_news(self):
        """百度链接测试:验证hao123链接测试"""
        self.driver.find_element_by_link_text('hao123').click()
        self.assertEqual(self.driver.current_url,'https://www.hao123.com/')
        self.driver.back()
    def test_baidu_map(self):
        """百度链接测试:验证地图链接测试"""
        self.driver.find_element_by_link_text('地图').click()
        self.assertEqual(self.driver.title,'百度地图')
        self.driver.back()
    def test_baidu_text(self):
        """百度输入框测试:验证输入框文本测试"""
        self.driver.find_element_by_id('kw').send_keys('selenium')
        self.driver.find_element_by_id('su').click()
        self.assertEqual(self.driver.title,'百度搜索_selenium')
        self.driver.back()
        
if __name__ == '__main__':
    suite = unittest.TestSuite()
    suite.addTest(Baidu('test_baidu_news'))
    suite.addTest(Baidu('test_baidu_map'))
    suite.addTest(Baidu('test_baidu_text'))
    unittest.TextTestRunner(verbosity=2).run(suite)
按照测试类来执行测试用例
    
import unittest
from time import sleep
from selenium import webdriver
import HTMLTestRunner
import time,os
def add(a,b):
    return a-b
class BaiduTest(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        cls.driver = webdriver.Chrome()
        cls.driver.get('https://www.baidu.com')
        cls.driver.implicitly_wait(10)
        cls.driver.maximize_window()
    @classmethod
    def tearDownClass(cls):
        cls.driver.quit()
    @unittest.skip('该功能已经取消,忽略该测试用例的执行')
    def test_baidu_news(self):
        """百度链接测试:验证hao123链接测试"""
        self.driver.find_element_by_link_text('hao123').click()
        self.assertEqual(self.driver.current_url,'https://www.hao123.com/')
        self.driver.back()
        sleep(3)
    @unittest.skipIf('5<3','测试用例执行')
    def test_baidu_map(self):
        """百度链接测试:验证地图链接测试"""
        self.driver.find_element_by_link_text('地图').click()
        self.assertEqual(self.driver.title,'百度地图')
        self.driver.back()
    #期望它失败
    @unittest.expectedFailure
    def test_001(self):
        self.assertEqual(add(5,4),2)
    def test_baidu_text(self):
        """百度输入框测试:验证输入框文本测试"""
        sleep(3)
        self.driver.find_element_by_id('kw').send_keys('selenium')
        self.driver.find_element_by_id('su').click()
        self.assertIn('selenium','百度搜索_selenium',msg='测试ok')
        self.driver.back()
    def test_baidu_edit(self):
        '''百度输入框测试:验证百度输入框是否可编辑'''
        sleep(3)
        so = self.driver.find_element_by_id('kw')
        self.assertTrue(so.is_enabled())
    @staticmethod
    def suite():
        suite = unittest.TestSuite(unittest.makeSuite(BaiduTest))
        # suite = unittest.TestLoader().loadTestsFromTestCase(BaiduTest) #从class类中加载
        # suite = unittest.TestLoader().loadTestsFromModule('Requests_test.py') #从模块中加载
        return suite
    def getNowtime(self):
        return time.strftime('%Y_%m_%d_%H_%M_%s')
    def Main(self):
        suite = unittest.defaultTestLoader.discover(
            start_dir=os.path.dirname(__file__),
            pattern=None,
            top_level_dir=None)
        # suite = unittest.TestLoader().discover(
        #     start_dir = None,
        #     pattern = None,
        #     top_level_dir = None
        # )
        return suite
    def Run(self):
        fp = os.path.join(os.path.dirname(__file__),'report',getNowtime +'test_repoet.html')
        runner = HTMLTestRunner.HTMLTestRunner(
            stream=open(fp,'wb'),
            title='接口自动化测试',
            description='windows7系统,chrome浏览器').run(Main())
        
if __name__ == '__main__':
    # suite = unittest.TestSuite(unittest.makeSuite(BaiduTest))
    # suite.addTest(BaiduTest)
    # unittest.TextTestRunner(verbosity=2).run(BaiduTest.suite())
    # unittest.main(verbosity=2)
    Run()
测试代码覆盖率的统计
pip install coverage
coverage run test*.py 
执行test开头的文件

Python + unittest知识点回顾的更多相关文章

  1. Python+pytest知识点回顾

    pip install pytest pytest 单元测试框架 pytest高于unittest测试框架 unittest测试类需要继承unittest.TestCase类 pytest不需要继承, ...

  2. Python + Requests 知识点回顾

    http://www.downza.cn/soft/11145.html PS下载地址 http://www.bejson.com/jsonviewernew/ JSON的在线视图 import re ...

  3. 零基础Python知识点回顾(一)

    如果你是小白,建议只要安装官网的python-3.7.0-amd64.exe 然后在电脑cmd命令提示符  输入检查是否已经安装pip,一般安装了python都会有的. >pip         ...

  4. django知识点回顾与补充

    一.django知识点回顾 1.Cookie操作 - 客户端本地存储的键值对 2.Session操作 - 3.URL路由 - /index -> view.函数 4.MTV 5.View中返回方 ...

  5. selenium+python+unittest实现自动化测试(入门篇)

    本文主要讲解关于selenium自动化测试框架的入门知识点,教大家如何搭建selenium自动化测试环境,如何用selenium+python+unittest实现web页面的自动化测试,先来看看se ...

  6. 最全Python基础知识点梳理

    本文主要介绍一些平时经常会用到的python基础知识点,用于加深印象,也算是对于学习这门语言的一个总结与回顾.python的详细语法介绍可以查看官方编程手册,也有一些在线网站可以学习 python语言 ...

  7. 从python run 和python unittest两种eclipse运行方式深入理解if __name__ == "__main__"

    在写一个简单的python测试程序的时候,发现eclipse中Run as "Python run 和 Python unittest”结果不一样?为什么会不一样? 先贴一下代码段: # - ...

  8. 面试前的准备---C#知识点回顾----03

    经过一天的奔波,喜忧参半,不细表 再回看下标题,C#知识点回顾 再看下内容,数据库3NF 原谅我这个标题党 今天继续回忆 1.HTTP中Post和Get区别 这忒简单了吧,大家是不是感觉到兴奋了,长舒 ...

  9. python爬虫主要就是五个模块:爬虫启动入口模块,URL管理器存放已经爬虫的URL和待爬虫URL列表,html下载器,html解析器,html输出器 同时可以掌握到urllib2的使用、bs4(BeautifulSoup)页面解析器、re正则表达式、urlparse、python基础知识回顾(set集合操作)等相关内容。

    本次python爬虫百步百科,里面详细分析了爬虫的步骤,对每一步代码都有详细的注释说明,可通过本案例掌握python爬虫的特点: 1.爬虫调度入口(crawler_main.py) # coding: ...

随机推荐

  1. Linux下Flash-LED的处理

    Linux下Flash-LED的处理 一些LED设备提供两种模式-torch和flash.在LED子系统中,LED类(参见Linux下的LED处理)和LED Flash类,分别支持这些模式.torch ...

  2. Linux内存技术分析(下)

    Linux内存技术分析(下) 五.内存使用场景 out of memory 的时代过去了吗?no,内存再充足也不可任性使用. 1.内存的使用场景 page 管理 slab(kmalloc.内存池) 用 ...

  3. 国内操作系统OS分析(下)

    国内操作系统OS分析(下) 3.2 Android/iOS移动互联网时代 Android是一种基于Linux的自由及开放源代码的操作系统.主要使用于移动设备,如智能手机和平板电脑,由Google公司和 ...

  4. CentOS:操作系统级监控及常用计数器解析---除CPU以外

    I/O I/O 其实是挺复杂的一个逻辑,但我们今天只说在做性能分析的时候,应该如何定位问题. 对性能优化比较有经验的人(或者说见过世面比较多的人)都会知道,当一个系统调到非常精致的程度时,基本上会卡在 ...

  5. Windows下Django的安装与项目创建

    1.Django的安装命令:pip install django 2.如果要指定安装版本可用:pip install django==1.10.3 3.查看指定的安装库:pip show django ...

  6. C#搞跨平台桌面UI,分别实现Windows,Mac,Linux屏幕截图

    搞跨平台IM,截图功能少不了. Windows 创建GDI的兼容位图,把桌面的图像通过BitBlt拷贝到兼容位图里,通过兼容位图的数据指针创建Bitmap对象,由于兼容位图的内存是非托管的,Bitma ...

  7. 【NX二次开发】Block UI对话框-代码生成部分

    常规: 语言:生成的代码语言 生成附注:是否生成注释代码 生成特定与块的代码: 输入点: 回调:对话框通过回调函数调用,例如通过另一个对话框的按钮调用本对话框 菜单:对话框通过菜单调用 用户出口:对话 ...

  8. 『言善信』Fiddler工具 — 15、使用Fiddler抓取HTTPS请求

    目录 1.Fiddler抓取HTTPS过程 2.拓展:SSL/TLS证书握手原理 3.Fiddler抓取HTTPS原理总结 4.Fiddler抓取HTTPS设置 步骤1:配置证书 步骤2:勾选设置 5 ...

  9. csp-s模拟测试55(9.29)联「线段树」·赛「??」题「神仙DP」

    T1 联 考试两个小时终于调过了,话说一个傻逼错最后还是静态查出错的..... 大概维护两个懒标记,一个区间覆盖,一个区间异或,然后保证每个区间只会存在一种懒标记. 然后维护区间0的个数,查询时查询那 ...

  10. 环境安装——JDK安装

    @ 目录 开发环境-JDK安装 1. 下载地址 2. 安装JDK 3. 配置系统环境 开发环境-JDK安装 无论在我们开始学习Java或者入职第一天安装环境,这个你都是必备滴!下面是下载和安装JDK的 ...