Python + unittest知识点回顾

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开头的文件

原文地址:https://www.cnblogs.com/Teachertao/p/12304029.html

时间: 2024-10-09 09:52:37

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

Python+pytest知识点回顾

pip install pytest pytest 单元测试框架 pytest高于unittest测试框架 unittest测试类需要继承unittest.TestCase类 pytest不需要继承,可以是一个函数,也可以是一个类 unittest参数化需要依赖第三方的库 pytest不需要依赖,直接使用内部的库parametrize unittest测试报告HTMLTestRunner pytest 测试报告pytest-html 或者是 allure unittest是没有插件的 pytes

面向对象【day07】:多态-面向对象使用场景--知识点回顾

本节内容 多态 面向对象使用场景 知识点回顾 一.多态 一.概述 多态性(polymorphisn)是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作.简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针. 那么,多态的作用是什么呢?我们知道,封装可以隐藏实现细节,使得代码模块化:继承可以扩展已存在的代码模块(类):它们的目的都是为了--代码重用.而多态则是为了实现另一个目的--接口重用!多态的作用,就是为了

面向对象知识点回顾整理

目录 面向对象知识点回顾整理 一.面向对象基础 1.类和对象 2.属性查找: 3.绑定方法: 4.对象之间的交互: 5.类的内置属性 6.三大特性:继承.多态.封装 二.面向对象高阶 元类 单例模式 面向对象知识点回顾整理 一.面向对象基础 面向对象编程的核心是对象二字,对象是属性与方法的结合体,python中一切皆对象. 优点:可扩展性强 缺点:编程的复杂度高 1.类和对象 对象:属性和方法的结合体 类:一堆属性和方法的结合体 python中是先有类再有对象,现实生活中是先有对象再有类 类名(

Spring知识点回顾(01)

Spring知识点回顾(01) 一.依赖注入 1.声明Bean的注解 @Component @Service @Repository @Controller 2.注入Bean的注解 @Autowired @Inject @Resource 二.加载Bean 1.xml方式 - applicationcontext.xml : Beans, Bean, Component-Scan 2.注解方式 - @Configuration,@ComponentScan,@Bean 用@Configurati

python unittest不执行&quot;if __name__ == &#39;__main__&#39; &quot;问题

问题: selenium导入unittest框架和HtmlReport框架后,HtmlReport不被执行. 假设代码为: from selenium import webdriver import unittest class Test(unittest.TestCase): print "this is class Test" def setup(self): print "this is setup" def test_1(self): print "

python PIL库回顾

之前用PIL的时候都不知道看官方文档,网上搜索结果靠前的一些介绍性的博客其实很扯淡,讲两个函数.贴三张图,文章就完了. 今天把他的文档看了看,发现一点也不简单,网上介绍的不过是冰山一角. 对于我这样一个不太懂多媒体的人,如果用到图像处理,主要也就这些操作: 读写.取通道.两幅图合并.像素点操作.各种滤镜.色彩模式转换.图像旋转.缩放.裁剪.仿射. PIL对付这些小喽啰,都是完全没有问题的. 读写 open是Image类的一个方法,返回值是一个Image对象,值得注意的是,open不能打开网络图片

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

经过一天的奔波,喜忧参半,不细表 再回看下标题,C#知识点回顾 再看下内容,数据库3NF 原谅我这个标题党 今天继续回忆 1.HTTP中Post和Get区别 这忒简单了吧,大家是不是感觉到兴奋了,长舒一口气了,终于出现了一个可以聊上10分钟的问题了. 根据HTTP规范,Get用于信息获取,而且应该是安全的和幂等的. 参数在URL后,以?分割,以&相连. 根据HTTP规范,Post表示可能修改服务器的资源请求.数据存在HTTP包中 以上最基本的得知道吧,重点可以聊的出现了,安全性. 详细请拜读:h

python 异常知识点

raise from python 在3.0 之后引入了raise from 表达式: raise exception from otherexception 当使用该语法时,第二个表达式指定了另一个异常类或实例,它会附加到引发异常的__cause__属性 注意: python3.0不再支持raise Exc,Args形式,而该形式在Python2.6中仍然可用,在Python3.0中,使用 raise Exc(Args)调用. with  as with语句格式: with expressio

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

本次python爬虫百步百科,里面详细分析了爬虫的步骤,对每一步代码都有详细的注释说明,可通过本案例掌握python爬虫的特点: 1.爬虫调度入口(crawler_main.py) # coding:utf-8from com.wenhy.crawler_baidu_baike import url_manager, html_downloader, html_parser, html_outputer print "爬虫百度百科调度入口" # 创建爬虫类class SpiderMai