1.Python热门单元测试框架对比:pytest和unittest还傻傻分不清楚?
2.macåpythonç¨ä»ä¹è½¯ä»¶(macä¸å¥½ç¨çpythonè¯è¨ç¼ç¨è½¯ä»¶)
3.python中unittest 单元测试调用没有调用到测试用例,源码新手求指点
4.常用的解析自动化测试工具有哪些
Python热门单元测试框架对比:pytest和unittest还傻傻分不清楚?
前言
在进行自动化测试时,编写测试用例会使用到单元测试模块,源码其中Python中常见的解析单元测试模块包括unittest、pytest、源码nose等。解析处理进度展示源码其中,源码unittest和pytest是解析被提及最多的两个框架,本文将通过简单介绍,源码对比这两者在断言、解析用例执行规则、源码前后置操作、解析测试报告、源码参数化功能、解析失败重跑、源码跳过用例等方面的主要区别。
unittest
unittest框架是Python内置的单元测试框架,广泛应用于各种项目中。它基于JUnit框架设计,隐藏图源码支持多种自动化测试用例编写、前置条件和后置数据清理功能。unittest能将多个测试用例组织到测试集中,生成测试报告。
pytest
pytest是基于Python的单元测试框架,是对unittest的扩展,更加简洁、方便,支持第三方插件,可以高效完成测试工作。pytest也支持unittest的代码框架内容。
区别
从以下几个方面对比unittest和pytest的主要区别:
断言
unittest采用自身携带的断言函数,如assertEqual、assertTrue、assertFalse等。而pytest使用Python内置的assert语句进行断言。
用例执行规则
unittest要求测试类继承unittest.TestCase,测试用例以test开头,仿cf源码执行顺序按ASCII排序,不能指定特定用例顺序。unittest提供多种方法(如TestCase、TestSuite、TestLoder、TextTestRunner)来方便测试用例编写和执行。
pytest则要求测试文件名以test_开头,类名以Test开头,测试用例同样以test_开头。执行顺序默认从上到下,可以通过第三方插件定制。执行用例无需导入模块,通过命令行即可执行。
前后置操作
unittest支持setup()和tearDown()方法控制用例前后置操作,setupclass()和teardownclass()方法控制类级别操作。pytest支持模块级别(setup_module,teardown_module)、函数级别(setup_function,庄筹码源码teardown_function)等操作,通过fixture和装饰器灵活使用。
测试报告
unittest没有自带测试报告,需依赖第三方插件(如HTMLTestRunner、BeautifulReport)生成报告。pytest同样没有自带报告,可使用第三方插件(如pytest-html、allure-pytest)生成详细报告。
参数化功能
unittest不支持参数化,需借助第三方库(如DDt)实现。pytest支持参数化,可通过@pytest.mark.parametrize或@pytest.fixture(params)实现。
失败重跑
unittest不支持用例失败后的自动重跑机制,而pytest通过第三方插件(如pytest-rerunfailures)实现用例重跑。
跳过用例
两者都有跳过用例的功能,unittest通过skip或skipif实现,pytest通过skip或skipif实现,允许在条件满足时跳过用例。大皇宫源码
实战演示
通过请求天气和查询身份证接口的测试用例,分别使用unittest和pytest框架进行参数化测试、跳过用例的实现,并通过生成测试报告进行对比。
总结
综上所述,unittest提供基础的单元测试功能,而pytest在unittest的基础上进行了增强和扩展,支持更多的第三方插件,使得测试编写更为灵活和高效。对于初学者,建议先学习unittest,了解其源码后,再逐步接触pytest。
macåpythonç¨ä»ä¹è½¯ä»¶(macä¸å¥½ç¨çpythonè¯è¨ç¼ç¨è½¯ä»¶)
Macä¸ç¨ä»ä¹åpython
Vimï¼æ¨èå¦ä¹ ï¼Pythonè§é¢æç¨ï¼
Vimå¯ä»¥è¯´æ¯Pythonæ好çIDEãVimæ¯é«çº§ææ¬ç¼è¾å¨ï¼æ¨å¨æä¾å®é çUnixç¼è¾å¨âViâåè½ï¼æ¯ææ´å¤æ´å®åçç¹æ§éãVimä¸éè¦è±è´¹å¤ªå¤çå¦ä¹ æ¶é´ï¼ä¸æ¦ä½ éè¦ä¸ä¸ªæ ç¼çç¼ç¨ä½éªï¼é£ä¹å°±ä¼æViméæå°ä½ çå·¥ä½æµä¸ã
EcppsewithPyDev
Ecppseæ¯é常æµè¡çIDEï¼èä¸å·²ç»æäºå¾ä¹ çåå²ãEcppsewithPydevå 许å¼åè å建æç¨å交äºå¼çWebåºç¨ãPyDevæ¯Ecppseå¼åPythonçIDEï¼æ¯æPythonï¼JythonåIronPythonçå¼åã
SubpmeText
SubpmeTextæ¯å¼åè ä¸ææµè¡çç¼è¾å¨ä¹ä¸ï¼å¤åè½ï¼æ¯æå¤ç§è¯è¨ï¼èä¸å¨å¼åè 社åºé常å欢è¿ãSubpmeæèªå·±çå 管çå¨ï¼å¼åè å¯ä»¥ä½¿ç¨TAæ¥å®è£ ç»ä»¶ï¼æ件åé¢å¤çæ ·å¼ï¼ææè¿äºé½è½æåä½ çç¼ç ä½éªã
Emacs
GNUEmacsæ¯å¯æ©å±ï¼èªå®ä¹çææ¬ç¼è¾å¨ï¼çè³æ¯æ´å¤çåè½ãEmacsçæ ¸å¿æ¯EmacsLisp解æå¨ï¼ä½æ¯æ¯æææ¬ç¼è¾ãå¦æä½ å·²ç»ä½¿ç¨è¿Vimï¼å¯ä»¥å°è¯ä¸ä¸Emacsã
KomodoEdit
KomodoEditæ¯é常干åï¼ä¸ä¸çPythonIDEã
PyCharm
PyCharmæ¯JetBrainså¼åçPythonIDEãPyCharmç¨äºä¸è¬IDEå ·å¤çåè½ï¼æ¯å¦ï¼è°è¯ãè¯æ³é«äº®ãProject管çã代ç 跳转ãæºè½æ示ãèªå¨å®æãåå æµè¯ãçæ¬æ§å¶â¦â¦å¦å¤ï¼PyCharmè¿æä¾äºä¸äºå¾å¥½çåè½ç¨äº[Django]å¼åï¼åæ¶æ¯æGoogleAppEngineï¼æ´é ·çæ¯ï¼PyCharmæ¯æ[IronPython]ï¼
Wing
WingwareçPythonIDEå ¼å®¹Python2.xå3.xï¼å¯ä»¥ç»åDjango,matplotpb,Zope,Plone,AppEngine,PyQt,PySide,wxPython,PyGTK,Tkinter,mod_wsgi,pygame,Maya,MotionBuilder,NUKE,Blenderåå ¶ä»Pythonæ¡æ¶ä½¿ç¨ãWingæ¯ææµè¯é©±å¨å¼åï¼éæäºåå æµè¯ï¼noseåDjangoæ¡æ¶çæ§è¡åè°è¯åè½ãWingIDEå¯å¨åè¿è¡çé度é½é常快ï¼æ¯æWindows,Linux,OSXåPythonversiã
PyScripter
PyScripteræ¯æ¬¾å è´¹å¼æºçPythonéæå¼åç¯å¢ï¼IDEï¼ã
TheEricPythonIDE
Ericæ¯å ¨åè½çPythonåRubyç¼è¾å¨åIDEï¼æ¯ä½¿ç¨Pythonç¼åçãEricåºäºè·¨å¹³å°çGUIå·¥å ·å Qtï¼éæäºé«åº¦çµæ´»çScintillaç¼è¾å¨æ§ä»¶ãEricå æ¬ä¸ä¸ªæ件系ç»ï¼å 许ç®åç对IDEè¿è¡åè½æ§æ©å±ã
InteractiveEditorforPython
IEPæ¯è·¨å¹³å°çPythonIDEï¼æ¨å¨æä¾ç®åé«æçPythonå¼åç¯å¢ãå æ¬ä¸¤ä¸ªéè¦çç»ä»¶ï¼ç¼è¾å¨åShellï¼å¹¶ä¸æä¾æä»¶å·¥å ·éä»å个æ¹é¢æ¥æé«å¼å人åçæçã
æ´å¤Pythonç¸å ³ææ¯æç« ï¼è¯·è®¿é®Pythonæç¨æ ç®è¿è¡å¦ä¹ ï¼ä»¥ä¸å°±æ¯å°ç¼å享çå ³äºMacä¸ç¨ä»ä¹åpythonç详ç»å 容å¸æ对大家ææ帮å©ï¼æ´å¤æå ³pythonæç¨è¯·å ³æ³¨ç¯çéè¤å ¶å®ç¸å ³æç« ï¼
pythonç¨ä»ä¹è½¯ä»¶ãPython3.9.7软件ãç¾åº¦ç½çèµæºå è´¹ä¸è½½:
é¾æ¥:
pwd=nhfcæåç :nhfcPython3.9.7ææ°æ£å¼çæ¯ä¸ç§é¢å对象ãç´è¯å¼è®¡ç®æºç¨åºè®¾è®¡è¯è¨ï¼ä¹æ¯ä¸ç§åè½å¼ºå¤§èå®åçéç¨åè¯è¨ï¼å·²ç»å ·æåå¤å¹´çåå±åå²ï¼æçä¸ç¨³å®ãpythonå ·æé常ç®æ·èæ¸ æ°çè¯æ³ç¹ç¹ï¼ä¸å ä¹å¯ä»¥å¨ææçæä½ç³»ç»ä¸è¿è¡ï¼é常éåå®æåç§é«å±ä»»å¡ï¼éçä¸æçæ´æ°ä¼åï¼éæ¸è¢«ç¨äºç¬ç«çã大å项ç®çå¼åï¼åªä¸ºç»ç¨æ·æ´å å®ç¾çæä½ä½éªã
æä»ä¹è½¯ä»¶å¯ä»¥åpythonç¼åpythonæºä»£ç ç软件.é¦æ¨çPycharmã
PyCharmç¨äºbaiä¸è¬IDEå ·å¤çåè½ï¼æ¯å¦ï¼è°è¯ãè¯æ³é«äº®ãProject管çãdu代ç 跳转ãæºè½æ示ãèªå¨å®zhiæãåå æµè¯ãçæ¬æ§å¶
å¦å¤ï¼PyCharmè¿æä¾äºä¸äºå¾å¥½çåè½ç¨äºDjangoå¼åï¼åæ¶æ¯æGoogleAppEngineï¼æ´é ·çæ¯ï¼PyCharmæ¯æIronPythonã
å ¶æ¬¡æ¯sublimetextï¼SublimeTextæ¯æå¤ç§ç¼ç¨è¯è¨çè¯æ³é«äº®ãæ¥æä¼ç§ç代ç èªå¨å®æåè½ï¼è¿æ¥æ代ç ç段(Snippetï¼çåè½ï¼å¯ä»¥å°å¸¸ç¨ç代ç ç段ä¿åèµ·æ¥ï¼å¨éè¦æ¶éæ¶è°ç¨ãæ¯æVIM模å¼ï¼å¯ä»¥ä½¿ç¨Vim模å¼ä¸çå¤æ°å½ä»¤ãæ¯æå®ï¼ç®åå°è¯´å°±æ¯ææä½å½å¶ä¸æ¥æè èªå·±ç¼åå½ä»¤ï¼ç¶åææ¾åæå½å¶çæä½æè å½ä»¤ã
è¿æJupyter,JupyterNotebook(æ¤å被称为IPythonnotebook)æ¯ä¸ä¸ªäº¤äºå¼ç¬è®°æ¬ï¼æ¯æè¿è¡å¤ç§ç¼ç¨è¯è¨ã
æåå°±æ¯æåºæ¬çnopad++ï¼æå¼å§çæ¶åæ¯å®ç¨è¿æ¬¾ä½ä¸ºå¼åå·¥å ·è¿è¡åºç¡ç»ä¹ ã
wingproæªæ³¨åéå¶
WingProforMac(Pythonå¼åå·¥å ·)æªæ³¨åéå¶æ¿æ´»ç
--
é 读
WingPro(Pythonå¼åç¯å¢)å ¨åWingIDEPro,软件åºäºpythonç¼ç¨è¯è¨å¼åç¯å¢ï¼æ¥æé常å¤pythonideçåè½ï¼æ以软件ä¹æ¯æå¼åpython项ç®ï¼è½¯ä»¶å°å·§ç®åï¼å°±ç®è¿è¡å¤æ代ç ä¹ä¸ä¼è¶ è¿Må åï¼éåä¸äºæ§è½æ¯è¾å·®ççµèï¼WingProæ¯æè°è¯å°æ¹æ¡çè½å°ï¼æ¯ä¸æ¬¾é常强大çç¼ç¨è½¯ä»¶ã
mac软件ä¸è½½ï¼WingProforMac
WingPromacçåè½ä»ç»
强大çè°è¯å¨
WingIDEProforMacç ´è§£ççè°è¯å¨å¯ä»¥è½»æ¾ä¿®å¤é误并以交äºæ¹å¼ç¼åæ°ä»£ç ã使ç¨æ¡ä»¶æç¹æ¥é离é®é¢ï¼ç¶åéæ¥æ§è¡ä»£ç ï¼æ£æ¥æ°æ®ï¼è§å¯å¼ï¼ä»DebugProbeçå½ä»¤è¡è¿è¡äº¤äºï¼ä»¥åéå½è°è¯ãæ¨å¯ä»¥è°è¯ä»IDEå¯å¨çå¤è¿ç¨åå¤çº¿ç¨ä»£ç ï¼æ管å¨Webæ¡æ¶ä¸ï¼ä»åµå ¥å¼Pythonå®ä¾è°ç¨æå¨è¿ç¨ç³»ç»ä¸è°ç¨ã
æºè½ç¼è¾å¨
WingIDEProforMacç ´è§£ççç¼è¾å¨éè¿éåä¸ä¸æçèªå¨å®æåææ¡£ï¼è°ç¨è¾ å©ï¼èªå¨ç¼è¾ï¼éæï¼ä»£ç æå ï¼å¤éï¼å¯èªå®ä¹çå è代ç ç段ï¼ä¹¦ç¾çæ¥å é交äºå¼Pythonå¼åãWingå¯ä»¥æ¨¡æviï¼emacsï¼Eclipseï¼VisualStudioåXcodeã
ç®åç代ç 导èª
WingIDEProforMacç ´è§£çéè¿goto-definitionï¼æ¥æ¾ç¨éï¼å¨é¡¹ç®ä¸æ¥æ¾ç¬¦å·ï¼ç¼è¾å¨ç¬¦å·ç´¢å¼ï¼æºæµè§å¨ä»¥å强大çå¤æ件æç´¢ï¼å¯ä»¥è½»æ¾ç»è¿ä»£ç ã
综ååå æµè¯
WingIDEProforMacç ´è§£çæ¯æ使ç¨unittestï¼doctestï¼noseï¼pyteståDjangoæµè¯æ¡æ¶è¿è¡æµè¯é©±å¨çå¼åã使ç¨Wing强大çè°è¯å¨å¯ä»¥è½»æ¾ä¿®å¤å¤±è´¥çæµè¯ã
è¿ç¨å¼å
WingIDEProforMacç ´è§£ççå¿«éé ç½®è¿ç¨å¼åæ¯æ使æ¨å¯ä»¥ä½¿ç¨å¨è¿ç¨ä¸»æºï¼VMæ容å¨ä¸è¿è¡çPython代ç æ ç¼ï¼å®å ¨å°ä½¿ç¨Wingçææåè½ã
å¯å®å¶åå¯æ©å±
python中unittest 单元测试调用没有调用到测试用例,新手求指点
没太明白你的意思,按你现在发出来的截图,print(b)确实只能打印<unittest.suite.TestSuitetests=XXXXXXX>,因为按你的代码,变量b接收到的是discover返回的数据,而discover返回的就是TestSuite的一个实例。
你是想问test-baidu.py为啥没执行吗?因为没看到你的内部代码,我只能猜测:
① 确定下test-baidu.py中的测试类是否继承了unittest.TestCase,如果没继承,肯定执行不到
② 确定test-baidu.py中类的方法名(你编写的测试用例方法),是否以test开头,不按这个开头,而你的Python源码中也没改的话,不会被加载到测试套件里。
③确定文件夹中__init__.py中是否包含load_tests方法,如果有,discover也只会加载load_tests中加载的方法。
话说,你的测试类文件名中为啥要用“-”,这个合适吗?
常用的自动化测试工具有哪些
1、Appium
AppUI自动化测试
Appium 是一个移动端自动化测试 开源工具,支持iOS 和Android 平台,支持Python、Java 等语言,即同一套Java 或Python 脚本可以同时运行在iOS 和Android平台,Appium 是一个C/S 架构,核心是一个 Web 服务器,它提供了一套 REST 的接口。当收到客户端的连接后,就会监听到命令,然后在移动设备上执行这些命令,最后将执行结果放在 HTTP 响应中返还给客户端。
2、Selenium
WebUI自动化测试
Selenium是一个用于Web应用程序测试的工具,Selenium已经成为Web自动化测试工程师的首选。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7、8、9)、Mozilla Firefox、Mozilla Suite等。这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建回归测试检验软件功能和用户需求。支持自动录制动作和自动生成 .Net、Java、Perl等不同语言的测试脚本。Selenium 是ThoughtWorks专门为Web应用程序编写的一个验收测试工具。其升级版本为Webdriver。
3、Postman
接口测试
Postman 提供功能强大的 Web API 和 HTTP 请求的调试,它能够发送任何类型的HTTP 请求 (GET, POST, PUT, DELETE…),并且能附带任何数量的参数和 Headers。不仅如此,它还提供测试数据和环境配置数据的导入导出,付费的 Post Cloud 用户还能够创建自己的 Team Library 用来团队协作式的测试,并能够将自己的测试收藏夹和用例数据分享给团队。
4.Robot Framework
Robot Framework是一个开源自动化框架,它实现了用于验收测试和验收测试驱动开发(ATDD)的关键字驱动方法。 Robot Framework为不同的测试自动化需求提供框架。 但是,通过使用Python和Java实现其他测试库,可以进一步扩展其测试功能。 Selenium WebDriver是Robot Framework中常用的外部库。
测试工程师可以利用Robot Framework作为自动化框架,不仅可以进行Web测试,还可以用于Android和iOS测试自动化。 对于熟悉关键字驱动测试的测试人员,可以轻松学习Robot Framework。
5、Soapui
接口测试
SoapUI提供了所有所需的工具来测试和完善的测试。总览标签给你一个项目的所有内容和全面的看法。只需一次点击,您可以添加任何数量的断言为验证传入的消息TestStep。使用功能强大的HTTP监视器记录,分析甚至修改客户机 - 服务器通信,因为它发生。和SoapUI临带来了更专业和先进的功能,保持遥遥领先其他测试工具。轻松创建和运行数据驱动测试。该数据源TestStep读取测试数据从任何外部来源 - Excel中,XML,JDBC,文件,等等 - 到标准SoapUI属性。
针对上面的自动化测试工具,每一个都有自己优势的功能,随着计算机行业的发展,自动化测试工具会越来越多,越来越完善。