pythontestcase
㈠ python unittest单元测试框架中,如何对一个testcase参数化,具体如何实现
#首先pyunit不像junit一样支持参数化测试。。。不过不是不能实现,只是pyunit的作者想让#这个东西变得尽量简单。所以不去实现。当然这个pyhon语言足够动态,你可以自己去实现
#外部输入参数测试。
importunittest
classParametrizedTestCase(unittest.TestCase):
"""
inheritfromthisclass.
"""
def__init__(self,methodName='runTest',param=None):
super(ParametrizedTestCase,self).__init__(methodName)
self.param=param
@staticmethod
defparametrize(testcase_klass,param=None):
"""
subclass,passingthemtheparameter'param'.
"""
testloader=unittest.TestLoader()
testnames=testloader.getTestCaseNames(testcase_klass)
suite=unittest.TestSuite()
fornameintestnames:
suite.addTest(testcase_klass(name,param=param))
returnsuite
#####################################################
##用法-testcase
classTestOne(ParametrizedTestCase):
deftest_something(self):
print'param=',self.param
self.assertEqual(1,1)
deftest_something_else(self):
self.assertEqual(2,2)
##用法-测试
suite=unittest.TestSuite()
suite.addTest(ParametrizedTestCase.parametrize(TestOne,param=42))
suite.addTest(ParametrizedTestCase.parametrize(TestOne,param=13))
unittest.TextTestRunner(verbosity=2).run(suite)
#结果
test_something(__main__.TestOne)...param=42
ok
test_something_else(__main__.TestOne)...ok
test_something(__main__.TestOne)...param=13
ok
test_something_else(__main__.TestOne)...ok
----------------------------------------------------------------------
Ran4testsin0.000s
OK
当然最好的方法就是用别人写的东西。。。
https://github.com/taykey/nose-ittr
这个拿去,不谢
㈡ python 的unittest单元测试框架里,可以对一个test_case 多次执行吗
为啥有一个测试用例需要执行多次的需求??
ut肯定是不支持的,你可以在ut外围包一层shell或者python,用来识别配置然后调用ut执行即可
㈢ python中的unittest调用TestCase报错是什么原因
setup主要是进行测试前的初始化工作,比如在接口测试前面做一些前置的参数赋值,数据库操作等等
teardown是测试后的清除工作,比如参数还原或销毁,数据库的还原恢复等
㈣ Python自动化测试框架有哪些
自动化测试常用的Python框架有哪些?常用的框架有Robot Framework、Pytest、UnitTest/PyUnit、Behave、Lettuce。Pytest、Robot Framework和UnitTest主要用于功能与单元测试,Lettuce和Behave仅适用于行为驱动测试。
一、Robot Framework
Python测试框架之一,Robot Framework被用在测试驱动(test-driven)类型的开发与验收中。虽然是由Python开发而来,但是它也可以在基于.Net的IronPython和基于Java的Jython上运行。作为一个Python框架,Robot还能够兼容诸如Windows、MacOS、以及linux等平台。
在使用Robot Framework(RF)之前,需要先安装Python 2.7.14及以上的版本。推荐使用Python 3.6.4,以确保适当的注释能够被添加到代码段中,并能够跟踪程序的更改。同时还需要安装Python包管理器--pip。
二、Pytest
适用于多种软件测试的Pytest,是另一个Python类型的自动化测试框架。凭借着其开源和易学的特点,该工具经常被QA(质量分析)团队、开发团队、个人团队、以及各种开源项目所使用。鉴于Pytest具有“断言重写(assert rewriting)”之类的实用功能,许多大型互联网应用,如Dropbox和Mozilla,都已经从下面将要提到的unittest(Pyunit)切换到了Pytest之上。
除了基本的Python知识,用户并不需要更多的技术储备。另外,用户只需要有一台带有命令行界面的测试设备,并且安装好了Python包管理器、以及可用于开发的IDE工具。
三、UnitTest/PyUnit
UnitTest/PyUnit一种标准化的针对单元测试的Python类自动化测试框架。基类TestCase提供了各种断言方法、以及所有清理和设置的例程。因此,TestCase子类中的每一种方法都是以“test”作为名词前缀,以标识它们能够被作为测试用例所运行。用户可以使用load方法和TestSuite类来分组、并加载各种测试。
可以通过联合使用,来构建自定义的测试运行器。正如我们使用Junit去测试Selenium那样,UnitTest也会用到UnitTest-sml-reporting、并能生成各种XML类型的报告。由于UnitTest默认使用了Python,因此我们并不需要什么先决条件。除了需要具备Python框架的基本知识,您也可以额外地安装pip、以及用于开发的IDE工具。
四、Behave
行为驱动开发是一种基于敏捷软件开发的方法。它能够鼓励开发人员、业务参与者和QA人员,三者之间的协作。Python测试框架Behave允许团队避开各种复杂的情况,去执行BDD测试。从本质上说该框架与SpecFlow和Cucumber相似,常被用于执行自动化测试。用户可以通过简单易读的语言来编写测试用例,并能够在其执行期间粘贴到代码之中。而且,那些被设定的行为规范与步骤,也可以被重用到其他的测试方案中。
任何具备Python基础知识的人都可以使用Behave。其他先决条件还包括:先安装Python 2.7.14及以上的版本。通过Python包管理器或pip来与Behave协作。大多数开发人员会选择Pycharm作为开发环境,当然您也可以选用其他的IDE工具。
五、Lettuce
Lettuce是另一种基于Cucumber和Python的行为驱动类自动化工具。Lettuce主要专注于那些具有行为驱动开发特征的普通任务。它不但简单易用,而且能够使得整个测试过程更流畅、甚至更有趣。安装带有IDE的Python 2.7.14、及以上的版本。当然,您也可以使用Pycharm或任何其他IDE工具。同时,您还需要安装Python包管理器。
㈤ python中的unittest调用TestCase报错,为什么,帮忙看看
因为unittest是python内置的,但是你在工程里面也命名了一个文件夹unittest。
所以导入的时候会先去查找你的定义的unittest,就没有TestCase这个属性。
解决办法,把你unittest重命名
㈥ python 的unittest单元测试框架里,可以对一个test_case 传参数进行参数化吗
一般不需要传参,一般的参数话属性在初始化setup的时候就初始化成功,后面test_xx中直接引用,谢谢采纳
㈦ 如何使用python编写测试脚本
1)doctest
使用doctest是一种类似于命令行尝试的方式,用法很简单,如下
复制代码代码如下:
def f(n):
"""
>>> f(1)
1
>>> f(2)
2
"""
print(n)
if __name__ == '__main__':
import doctest
doctest.testmod()
应该来说是足够简单了,另外还有一种方式doctest.testfile(filename),就是把命令行的方式放在文件里进行测试。
2)unittest
unittest历史悠久,最早可以追溯到上世纪七八十年代了,C++,Java里也都有类似的实现,Python里的实现很简单。
unittest在python里主要的实现方式是TestCase,TestSuite。用法还是例子起步。
复制代码代码如下:
from widget import Widget
import unittest
# 执行测试的类
class WidgetTestCase(unittest.TestCase):
def setUp(self):
self.widget = Widget()
def tearDown(self):
self.widget.dispose()
self.widget = None
def testSize(self):
self.assertEqual(self.widget.getSize(), (40, 40))
def testResize(self):
self.widget.resize(100, 100)
self.assertEqual(self.widget.getSize(), (100, 100))
# 测试
if __name__ == "__main__":
# 构造测试集
suite = unittest.TestSuite()
suite.addTest(WidgetTestCase("testSize"))
suite.addTest(WidgetTestCase("testResize"))
# 执行测试
runner = unittest.TextTestRunner()
runner.run(suite)
简单的说,1>构造TestCase(测试用例),其中的setup和teardown负责预处理和善后工作。2>构造测试集,添加用例3>执行测试需要说明的是测试方法,在Python中有N多测试函数,主要的有:
TestCase.assert_(expr[, msg])
TestCase.failUnless(expr[, msg])
TestCase.assertTrue(expr[, msg])
TestCase.assertEqual(first, second[, msg])
TestCase.failUnlessEqual(first, second[, msg])
TestCase.assertNotEqual(first, second[, msg])
TestCase.failIfEqual(first, second[, msg])
TestCase.assertAlmostEqual(first, second[, places[, msg]])
TestCase.failUnlessAlmostEqual(first, second[, places[, msg]])
TestCase.assertNotAlmostEqual(first, second[, places[, msg]])
TestCase.failIfAlmostEqual(first, second[, places[, msg]])
TestCase.assertRaises(exception, callable, ...)
TestCase.failUnlessRaises(exception, callable, ...)
TestCase.failIf(expr[, msg])
TestCase.assertFalse(expr[, msg])
TestCase.fail([msg])
㈧ 新手求助!python+testlink自动化,如何下载testlink的test case附件
你需要先安装这个东西
你可以从 SourceForge去下载一个稳定的版本,然后pip install TestLink-API-Python-client-0.8.0.zip
然后你需要在linux里面用下面的步骤来验证安装:
set TESTLINK_API_PYTHON_SERVER_URL=http://[YOURSERVER]/testlink/lib/api/xmlrpc/v1/xmlrpc.php
set TESTLINK_API_PYTHON_DEVKEY=[Users devKey generated by TestLink]
python
>>> import testlink
>>> tls = testlink.TestLinkHelper(testlink.TestlinkAPIClient)
>>> tls.about()
' Testlink API Version: 1.0 initially ....'
下面是一个完成的测试过程:
set TESTLINK_API_PYTHON_SERVER_URL=http://[YOURSERVER]/testlink/lib/api/xmlrpc/v1/xmlrpc.php
set TESTLINK_API_PYTHON_DEVKEY=[Users devKey generated by TestLink]
python
>>> import testlink
>>> tls = testlink.TestLinkHelper().connect(testlink.TestlinkAPIClient)
>>> tls.countProjects()
3
>>> tc_info = tls.getTestCase(None, testcaseexternalid='NPROAPI-3')
[{'full_tc_external_id': 'NPROAPI-3', ..., 'id': '5440', 'version': '2',
'testsuite_id': '5415', 'tc_external_id': '3','testcase_id': '5425', ...}]
>>> tls.TCnewTestCase(tc_info[0]['testcase_id'], testsuiteid=newSuiteID,
testcasename='a new test case name')
>>> print tls.whatArgs('createTestPlan')
createTestPlan(<testplanname>, <testprojectname>, [note=<note>], [active=<active>],
[public=<public>], [devKey=<devKey>])
create a test plan
这样的话,你就可以看到对应的testcase用例了
㈨ python专家,帮忙看下unittest模块testcase类错误
>>> import unittest
>>> unittest.TestCase
<class 'unittest.case.TestCase'>
>>>
所以你的是误用标点符号,应该用点你用逗号,当然错了
㈩ python中的super(TestCase, self).__init__()如何理解
首先找到test的父类(比如是类A),然后把类test的对象self转换为类A的对象,然后“被转换”的类A对象调用自己的__init__函数