【Python + Selenium】Mock Testing 是啥?一个so上的高票答案。
There are many kinds of testing which really made me confused.
To be honest, I've never heard of something like Mock testing, stub testing. I had to learn a lot before I can know little about testing.
Whenever I saw something which was written by some foreign guys in several years ago, I felt so bad as I fell behind for lots of knowlege and it's even impossible for me to catch up with. Anyhow, just start!
I'm going to build a framework for our daily testing website. It's a longlong journey.
维基对python 测试工具的分类。得一个个研究呀!
https://wiki.python.org/moin/PythonTestingToolsTaxonomy
- Mock Testing:
转一个stackoverflow上的高票答案
Prologue: If you look up the noun mock in the dictionary you will find that one of the definitions of the word is something made as an imitation.
你在字典上查这个词呀,Mock啥意思,就是一个模仿/模拟出来的东西。
Mocking is primarily used in unit testing. An object under test may have dependencies on other (complex) objects. To isolate the behaviour of the object you want to test you replace the other objects by mocks that simulate the behavior of the real objects. This is useful if the real objects are impractical to incorporate into the unit test.
In short, mocking is creating objects that simulate the behaviour of real objects.
Mocking在单元测试里用的多,(单元测试 多用白盒,集成测试多用灰盒,系统测试黑盒,嗯复习一下)。你测试的对象很可能会依赖一些其他复杂的对象。把其他的对象都用Mocks替代,这样可以隔离出你想测的对象的行为。当真实对象很难被在包含在单元测试中的时候,mock很有用。
简单说,mocking就是你创建一些对象来模拟真实对象的行为。
At times you may want to distinguish between mocking as opposed to stubbing. There may be some disagreement about this subject but my definition of a stub is a "minimal" simulated object. The stub implements just enough behaviour to allow the object under test to execute the test.
A mock is like a stub but the test will also verify that the object under test calls the mock as expected. Part of the test is verifying that the mock was used correctly.
To give an example: You can stub a database by implementing a simple in-memory structure for storing records. The object under test can then read and write records to the database stub to allow it to execute the test. This could test some behaviour of the object not related to the database and the database stub would be included just to let the test run.
If you instead want to verify that the object under test writes some specific data to the database you will have to mock the database. Your test would then incorporate assertions about what was written to the database mock.
你可能又想区分mocking和stubbing,说出来有些人可能不同意,他理解就是一个stub,是小的模拟对象。你这个测试能执行起来,肯定需要一些很基本,最起码的一些对象。stub就是提供能让测试跑起来的最基本的模拟对象。
mock虽然跟stub像,但是除此之外,温饱之外的小康,mock一会验证你的这臆造出来的对象是意料之中的,验证这对象是不是你想模拟的对象。mock 测试中会验证这mock 用对了地方。
举个栗子,你可以stub(空桩)造一个只有最基本结构的简易数据库去存储你的数据。你要测试的对象可以去这个简易数据库里读写数据,你的测试可以跑起来的。但是你这过程中可能会测试一些跟数据库无关的东西,并不是你真正想测的。而且,这个简易数据库只是为了让你test能跑起来而造的。
你的测试可以跑起来了,你又想测些特定数据,那么你必须mock数据库了。你的测试将会包含一些关于写怎样的数据到数据库的判断语句。
我英语怎么这么差,看不懂呀,文化差异吗?
【Python + Selenium】Mock Testing 是啥?一个so上的高票答案。的更多相关文章
- Python+Selenium练习篇之1-摘取网页上全部邮箱
前面已经介绍了Python+Selenium基础篇,通过前面几篇文章的介绍和练习,Selenium+Python的webUI自动化测试算是入门了.接下来,我计划写第二个系列:练习篇,通过一些练习,了解 ...
- Python+Selenium练习篇之18-获取元素上面的文字
本文介绍如何通过Selenium方法来获取某一个元素的text属性值.在很多自动化测试脚本中,需要多次获取元素的text值,拿过来进行对比和匹配.例如,在一个登陆界面,如果不输入用户名和密码,直接点击 ...
- Python+Selenium中级篇之-封装一个自己的类-浏览器引擎类
前一篇文章我们知道了,如何去封装几个简单的Selenium方法到我们自定义的类,这次我们编写一个类,叫浏览器引擎类,通过更改一个字符串的值,利用if语句去判断和控制启动那个浏览器.这里我们暂时,支持三 ...
- Python+Selenium基础篇之5-第一个完整的自动化测试脚本
前面文章,我们介绍了如何采用XPath表达式去定位网页元素,在掌握了如何抓取或者如何书写精确的XPath表达式后,我们可以开始写自己的第一个真正意义上的webui 自动化测试脚本,就相当于,你在学习P ...
- Python + Selenium + AutoIt 模拟键盘实现另存为、上传、下载操作详解
前言 在web页面中,可以使用selenium的定位方式来识别元素,从而来实现页面中的自动化,但对于页面中弹出的文件选择框,selenium就实现不了了,所以就需引用AutoIt工具来实现. Auto ...
- [adb 学习篇] python将adb命令集合到一个工具上
https://testerhome.com/topics/6938 qzhi的更全面,不过意思是一样的,另外补充一个开源的https://github.com/264768502/adb_wrapp ...
- Python+Selenium练习篇之11-浏览器上前进和后退操作
本文来介绍上如何,利用webdriver中的方法来演示浏览器中地址栏旁边的前进和后退功能. 相关脚本代码如下: # coding=utf-8import timefrom selenium impor ...
- 学霸笔记系列 - Python Selenium项目实战(一)—— 怎么去验证一个按钮是启用的(可点击)?
Q: 使用 Python Selenium WebDriver 怎么去验证一个按钮是启用的(可点击)? A:Selenium WebDriver API 里面给出了解决方法is_enabled() 使 ...
- python selenium 常见问题列表
python selenium webdriver 常见问题FAQ 另一个FAQ: https://code.google.com/p/selenium/wiki/FrequentlyAskedQue ...
随机推荐
- Hello Java
用记事本或者Eclipse编写如下代码 public class JavaAPP{ public static void main(String[] args){ System ...
- ZeroMQ接口函数之 :zmq_recv – 从一个socket上接收一个消息帧
ZeroMQ 官方地址 :http://api.zeromq.org/4-1:zmq_recv zmq_recv(3) ØMQ Manual - ØMQ/4.1.0 Name zmq_r ...
- django manytomany
转载:http://my.oschina.net/u/572994/blog/105280 例如有如下模型 models.py ? 1 2 3 4 5 6 7 from django.db impor ...
- (原)解决.NET 32位程序运行在64位操作系统下的兼容性问题
背景:一个第三方组件是C++.NET 32位开发的,后被C#(基于FrameWork4.0)调用并封装成组件,此二次封装的组件无法运行于64位操作系统上. 开发环境:VS2012:解决 ...
- (学)解决VMware Taking ownership of this virtual machine failed
原文:http://blog.csdn.net/fisher_jiang/article/details/6992588背景: 一次crash可能会造成虚拟机锁死的情况发生现象:点击take owne ...
- 如何获取hibernate代理类代理的实际对象实例?
在hibernate中,通过sql语句查询带clob字段的记录,查出来的结果集是List<HashMap<String,Object>>类型,在调用jackson的接口转为js ...
- thinkphp2
- CentOS下通过yum安装svn及配置
CentOS下通过yum安装svn及配置 1.环境centos5.5 2.安装svnyum -y install subversion 3.配置 建立版本库目录mkdir /www/svndata s ...
- MySQL(无GUI) Windows安装和启动
1.在官网http://dev.mysql.com/downloads/下载 MySQL Community Server 2.解压后是这个样子: 3.找到cmd,并且用管理员权限启动,必须!不然那没 ...
- 手动删除portal中托管服务。
在portal中将server作为托管联合服务器,然后发布了托管服务.若中间取消了托管联合服务器,再重新连接,那么会出现之前的托管服务无法删除的现象. 下文为怎样手动删除这些服务的方法,(不过貌似之后 ...