unittest

Selenium基于Python web自动化测试框架 -- PO

徘徊边缘 提交于 2020-01-01 03:36:13
关于selenium测试框架首先想到的就是PO模型,简单说下PO模型 PO模型的概念和理解: PO就是一个设计思想,将代码以页面为单位进行组织,针对这个页面上的所有信息、相关操作都放到一个类中,从而使具体的测试用例变成了简单的调用和验证操作。 优点:进行了拆分和分层 缺点:对于复杂的业务page层变了,case也需要去改动 PO模型的目录结构: 其中,base_page是login_page、search_page的基础。test_login调用login_page,login_page调用base_page,同理test_search。 PO代码示例: base_page.py 1 from selenium.webdriver.support.wait import WebDriverWait 2 3 ''' 4 这个类主要是完成所有页面的一些公共方法的封装 5 ''' 6 class Action(object): 7 #初始化 8 def __init__(self,se_driver): 9 self.driver = se_driver 10 11 #定义open方法 12 def open(self,url): 13 self.driver.get(url) 14 self.driver.maximize_window() 15 16 #重写元素定位的方法 17

Appium+python HTML测试报告(1)

我与影子孤独终老i 提交于 2020-01-01 03:35:37
测试任务执行完成后,我们需要一份通俗易懂的测试报告来展示自动化测试的结果。 HTMLTestRunner是Python的单元测试框架unittest的一个扩展,它生成易于使用的HTML测试报告。与TextTestRunner一样提供run()方法来执行测试套件或测试用例,返回特定的值表示执行结果。 一、HTMLTestRunner配置 1、HTMLTestRunner.py的下载 下载地址: python2: http://tungwaiyip.info/software/HTMLTestRunner.html 右键另存为下载HTMLTestRunner.py,将文件放到...\python\Lib目录下 python3: https://pan.baidu.com/s/1k4m6JFelcWH_QiHGlvjsUQ HTMLTestRunner是基于Python2开发的,要支持python3,需要修改HTMLTestRunner.py文件中的部分内容。上面下载链接为已修改文件,将文件放到...\python\Lib目录下。 在python交互模式下导入HTMLTestRunner模块,系统没有报错则说明添加成功。 >>> import HTMLTestRunner >>> 2、生成HTML测试报告 # coding:utf-8import unittest, timefrom

使用典型的测试目录结构运行unittest

限于喜欢 提交于 2019-12-30 20:09:13
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 即使是一个简单的Python模块,最常见的目录结构似乎也是将单元测试分成各自的 test 目录: new_project/ antigravity/ antigravity.py test/ test_antigravity.py setup.py etc. 例如,请参见此 Python项目howto 。 我的问题是 ,实际上运行测试的通常方法 是 什么? 我怀疑这对除我以外的所有人来说都是显而易见的,但您不能仅从测试目录运行 python test_antigravity.py ,因为其 import antigravity 将失败,因为模块不在路径上。 我知道我可以修改PYTHONPATH和其他与搜索路径有关的技巧,但我不敢相信这是最简单的方法-如果您是开发人员,那很好,但如果用户只是想检查测试结果,就不能期望用户使用通过。 另一种选择是将测试文件复制到另一个目录中,但是似乎有点愚蠢,并且错过了将它们放在一个单独目录中的意义。 那么,如果您刚刚将源代码下载到我的新项目中,将如何运行单元测试? 我希望有一个答案可以对用户说:“要运行单元测试,请执行X。” #1楼 使用 setup.py develop 来使您的工作目录成为已安装的Python环境的一部分,然后运行测试。 #2楼 从您链接到的文章:

python单元测试unittest

旧时模样 提交于 2019-12-27 14:51:12
Python中有一个自带的单元测试框架是unittest模块,用它来做单元测试,它里面封装好了一些校验返回的结果方法和一些用例执行前的初始化操作。 在说unittest之前,先说几个概念: TestCase 也就是测试用例 TestSuite 多个测试用例集合在一起,就是TestSuite TestLoader是用来加载TestCase到TestSuite中的 TestRunner是来执行测试用例的,测试的结果会保存到TestResult实例中,包括运行了多少测试用例,成功了多少,失败了多少等信息 下面写一个简单的单元测试用例 下面是一些常用的断言,也就是校验结果 那如何生成一个测试报告呢,需要加入另外一个模块了,HTMLTestRunner,这个模块需要自己安装,使用执行测试用例就会生成一个html的测试报告,里面会有每个测试用例的执行结果,代码如下: 如果我们有很多个模块,每个模块下面都写了很多python文件,每个python文件里面都有测试用例,那怎么把这个目录下的用例都执行了呢,就要先找到这个目录下的所有python文件,然后找到里面的测试用例,逐个执行,代码如下: 我们在后续进行持续集成的时候,要让代码自动运行,就会用到Jenkins了,但是上面产生的测试报告都是html格式的,Jenkins不认识,就在Jenkins里面显示不出来

unittest参数化

女生的网名这么多〃 提交于 2019-12-26 20:34:25
在写case的时候,如果用例的操作是一样的,就是参数不同,比如说要测一个登录的接口,要测正常登录的,黑名单用户登录的,账号密码错误等等,在unittest里面要写多个case来测试。 这样的情况只是调用接口的时候参数不一样而已,再写多个case的话就有点多余了,那怎么办呢,就得把这些参数都写到一个list里面,然后循环去执行这个case,这样就可以省去写多个case了。 当然有个第三方模块就直接有这样的功能,不需要咱们再自己写循环了,那就是nose-parameterized,直接pip安装就可。 pip install nose-parameterized import unittest import nose_parameterized def calc(a,b): res=round(a/b,2) print(res) return res case=[ [1,2,0.50], [2,2,1.00], [3,4,0.46] ]#使用它提供的装饰器装饰这个函数,把咱们写的这4个数据放到这个list里面 class MyTest(unittest.TestCase): @nose_parameterized.parameterized.expand(case) def test_func(self,a,b,e): res=calc(a,b) self.assertEqual

Python-Unittest 实例1

风流意气都作罢 提交于 2019-12-26 18:35:13
import unittest def sum_number(a, b): return a + b class MyTestCase(unittest.TestCase): @classmethod # setupClass 方法可以保证测试用例执行之前会默认执行一次# def setUpClass(cls) -> None: print("SetupClass") def setUp(self) -> None: # setup 方法在每个测试用例执行前都会执行一次# print("Setup") def test_sth(self): self.assertEqual(True, False) def test_sum_int(self): self.assertEqual(sum_number(1, 2), 3) self.assertEqual(sum_number(100, 200), 300) def test_sum_number(self): self.assertEqual(sum_number(1.1, 2.1), 3.2) def tearDown(self) -> None: # tearDown 方法表示每个测试用例执行结束后执行一次# print("tearDown") @classmethod # tearDownClass

Python单元测试浅析

情到浓时终转凉″ 提交于 2019-12-25 22:52:12
测试的意义   人们针对一个具体问题,通过分析和设计,最后用编程语言写出了一个程序,如果它通过了语言解释器(编译器)的检查,可以运行了,那么下一步的工作就是设法确认它确实满足了我们需求。这篇文章就是讨论怎么确认程序是否满足用户提出的需求。 满足需求,换言之就是功能正常,确认功能正常可以从以下几个方面确认: 定义的函数对于所有正确的参数都能返回正确的结果 写出的程序对所有合适的输入都能产生正确的输出   量化后的做法就是通过一系列的试运行,检查程序的行为、输入和输出,如果检查中发现了问题,就纠正、改进。这个也是功能测试和安全测试的初衷。 测试用例   测试考虑的基本问题就是怎么运行程序,需要提供什么数据,才能最大限度的检查程序的各种行为和情况,最大可能的挖出程序中的错误和缺陷。基于设计什么测试流程、提供什么参数这种检查程序运行的一套数据被称为一个测试用例。一个测试用例就是可量化的测试流程。 确认测试用例又区分两类方式: 黑盒测试 就是不看代码,直接上手程序的使用测试。这里不讨论黑盒 白盒测试 白盒测试的基础是看程序的内部结构(代码)和可能产生的执行路径,根据内部结构来选择测试的用例,使程序在试验性运行中就能表示出尽可能多的不同行为。这个做法的基本理念就是:如果所有可能执行的路径(顺序、条件、while、for、嵌套...执行结构)都能给出正确的结果,那么程序的正确性就能得到保证。

Python unittest appium

旧城冷巷雨未停 提交于 2019-12-24 01:17:57
import unittest from appium import webdriver from appium.common.exceptions import NoSuchContextException import desired_capabilities class ContextSwitchingTests(unittest.TestCase): def setUp(self): desired_caps = desired_capabilities.get_desired_capabilities('selendroid-test-app.apk') self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) def test_contexts_list(self): self._enter_webview() contexts = self.driver.contexts self.assertEqual(2, len(contexts)) def test_move_to_correct_context(self): self._enter_webview() self.assertEqual('WEBVIEW_io.selendroid.testapp', self

Day-10: 错误、调试和测试

百般思念 提交于 2019-12-23 02:06:04
  程序运行时,会遇到各种各样的错误。   编写错误叫做bug,而另一类由于运行过程中无法预测的,比如写文件时,磁盘满了,写不进去;或者从网络抓取数据,网络突然掉了。这些错误称为异常,程序中需要对异常进行处理,使得程序能够运行下去。 错误处理   Python中,程序运行错误时,如果错误没有捕获,它会一直往上抛,最后被Python解释器捕获,打印一个错误。 # err.py: def foo(s): return 10 / int(s) def bar(s): return foo(s) * 2 def main(): bar('0') main() $ python err.py Traceback (most recent call last): File "err.py", line 11, in <module> main() File "err.py", line 9, in main bar('0') File "err.py", line 6, in bar return foo(s) * 2 File "err.py", line 3, in foo return 10 / int(s) ZeroDivisionError: integer division or modulo by zero 从上到下,错误会一层层的反馈,直到显示最终出错的地方。   try..

unittest单元测试,基于java的junit测试框架

北城以北 提交于 2019-12-23 00:42:00
import unittestclass study(unittest.TestCase): def testXia(self): self.assertEqual((3*4),20) def testHong(self): self.assertEqual(2,2)if __name__=="__main__": unittest.main()注意:1.方法的命名以test开头;2.查看unittest的用法,help(unittest);3.查看**的属性,dir(unittest.TestCase); 来源: https://www.cnblogs.com/canglongdao/p/11966851.html