测试自动化框架

imgqa的Python项目详细描述


waffle.io-列及其卡计数构建状态pypi version加入聊天,网址:https://gitter.im/pyqa/imgqa

质量保证自动化框架-质量保证重新设想!

qa reimagined a.k.aimgqa是一个基于python的统一测试自动化框架。这是在对大多数项目中用于ui/rest api测试的现有方法进行了深入研究之后提出的,它有望很容易地解决一系列问题。 该框架旨在将各种指导方针、编码标准、概念、过程、实践、项目层次结构、模块化、报告机制、测试数据注入等建设性地融合到支柱自动化测试中。

主要功能

  • selenium函数:此模块包含大量的selenium包装函数,这些函数通常用于ui测试。这些被包装的函数提供了异常处理的屏蔽,比常规的selenium方法更好地处理可能发生的所有不同类型的异常。如果由于某种原因,提供的任何方法都不起作用,那么通过利用其他技术/javascript,在每个方法中都提供了一种回退机制。

  • rest api函数:此模块包含restapi包装的函数,这些函数通过利用python的"请求"库,通常用于restapi测试。这些方法是通用的,用于处理任何类型的请求,如get、put、post、delete等。模块提供了管理身份验证令牌的配置。此外,还有一些通用方法,用于以最简化的方式验证常用断言类型和参数,这些方法与请求(如头、负载等)一起提供

  • 实用程序:此模块旨在提供以可重用性为重点构建的社区支持实用程序库。以下是框架当前支持的实用程序:

    • 图像比较:此模块提供通过opencv、ssim(结构化相似性索引)进行图像比较的功能,而不是逐像素比较。这些方法是通用的,只需两幅图像即可计算出差异。

    • 验证码读取:此实用程序利用"pytesseract"模块从图像执行验证码读取。它接受包含验证码的图像作为输入,并返回一个字符串,其中提到了验证码。

    • 拼写检查,Web应用程序中的辅助功能检查:此模块处于WIP模式,在这种模式下,我们将利用WebSpider概念,以系统、自动的方式浏览万维网,从而在Web应用程序中启用拼写检查和辅助功能检查,从网页中取出所有链接,以便重复此过程。

  • 代表orting:该框架足够灵活,可以与多个报表平台(如reportportal.ioallure report等)配合使用。a regular,还可以通过使用pytest html模块生成自包含且可自定义的html报告(该模块作为此包的依赖项捆绑在一起)

  • 持续测试:该框架通过利用Docker为CT(持续测试)提供便利。框架中提供的Docker文件可用于从头开始在任何服务器上设置运行框架所需的必要先决条件/环境。

先决条件

框架要求

安装

建议直接从PYPI安装有效/经过测试的版本,因为它将自动解决依赖关系的问题。

PIP安装IMGQA

如果对当前设置进行了任何自定义更新,我们将需要克隆当前存储库并运行python setup.py develop,以便本地更改反映在安装版本中。

运行测试

所有功能的示例测试用例都列在imgqa-->;examples文件夹下。要运行示例测试,请打开命令提示符/terminal,转到imgqa-->;examples文件夹并运行以下命令:

pytest{filename}.py-s(-s表示标准输出,请参阅此处了解有关pytest框架及其功能/插件/选项等的详细信息)

浏览器操作

浏览器操作模块方法摘要

本模块围绕Selenium Web驱动程序功能展开。 以下是本模块中处理的主要方面:

  • 最常见的情况是,如果对象正在更改状态,dom刷新将导致异常(staleElementReferenceException)。我们正在处理此问题,方法是检查预期处于就绪状态的网页,并捕获异常以防止在网页处于预期状态后该对象不在网页中时失败。
  • 此模块的大多数功能将捕获异常以防止失败。
<表><广告>方法名说明 参数用法< /广告><正文>页面准备就绪等待网页应处于就绪状态。self.page_readiness_wait()< >定位器检查定位器类型分类的局部方法。(a)locator_dict:定位器值、定位器依据和值的字典自定位器检查(定位器dict)打开打开传递的"url"。自行打开(URL)重新加载页面 >通过Selphi或Java脚本刷新页面。self.reload_page()获取页面资源返回当前页或框架的整个HTML源代码。self.get_page_source()获取标题返回当前页的标题。self.get_title()获取位置使用Sele/Java脚本返回当前浏览器URL。self.get_location()< >获取属性从提供的定位器获取属性。(a)定位器:标识符类型和值的字典({'by':'id','value':'start-of-content.'})。(b)属性名称:获取其值的属性名称self.get_attribute(定位器,attribute_name=none)单击单击元素。(a)定位器:标识符类型为AN的字典d值({'by':'id','value':'start-of-content.})。self.click(定位器)发送u键发送文本,但不清除现有文本。(a)定位器:标识符类型和值的字典({'by':'id','value':'start-of-content.'})。(b)要发送的字符串。self.send_键(定位器)获取文本从提供的定位器获取文本。(a)定位器:标识符类型和值的字典({'by':'id','value':'start-of-content.})。self.获取文本(定位器)返回使用Selenium或JS在浏览器上模拟后退按钮。self.go_back()前进使用Selenium或JS在浏览器上模拟前进按钮。self.go_forward()设置窗口大小设置当前窗口的宽度和高度。(window.resizeto)(a)宽度:以像素为单位设置窗口的宽度。(b)高度:以像素为单位设置窗口的高度。自行设置窗口大小(800600)最大化最大化当前窗口。self.maximize()获取驱动程序名称返回webdriver实例的名称。self.get_driver_name()获取域URL方法从webdriver本身提取域url。self.get_domain_url()清除文本如果是文本输入元素,请清除文本(a)定位器:标识符类型和值的字典({'by':'id','value':'start-of-content.})。self.清除文本(定位器)截图将屏幕截图保存到目录(现有或新的)。(a)文件路径:带有目录路径的文件名(c:/images/image.png)。self.capture_屏幕截图(self,filepath)切换到活动元素返回带焦点的元素,如果没有焦点,则返回body。self.switch_to_active_element()切换到窗口使用selenium/javascript将焦点切换到指定的窗口。(a)要切换的窗口的名称自动切换到窗口(窗口)将"U"切换到"U"帧使用selenium/javascript将焦点切换到指定的帧。(a)frame name:要切换的帧的名称。self.切换到框架(framename)切换到默认内容将焦点切换到默认帧。self.switch_to_default_content()切换到警报将焦点切换到页面上的警告。self.switch_to_alert()将鼠标悬停在元素上将鼠标悬停在特定元素上。(a)定位器:标识符类型和值的字典({'by':'id','value':'start-of-content.})。将鼠标悬停在元素上(定位器)将鼠标悬停在u上单击悬停并单击特定元素。(a)定位器:标识符类型和值的字典({'by':'id','value':'start-of-content.})。将鼠标悬停在"单击"(定位器)等待元素等待UI中存在元素。(a)定位器:标识符类型和值的字典({'by':'id','value':'start-of-content.})。self.wait_for_element(定位器)等待并接受警报等待并接受页面上的提醒。self.wait_and_accept_alert()等待和拒绝警报等待警告和拒绝。self.wait_and_reject_alert()按索引选择选项按索引选择选项。(a)定位器:标识符类型和值的字典({'by':'id','value':'start-of-content.'})。(b)索引:索引的整数值。self.select_option_by_index(定位器,索引)按u值选择u选项使用值选择选项。(a)定位器:字典标识符类型和值的y({'by':'id','value':'start-of-content.'})。(b)值:选择选项的字符串值。self.select_option_by_value(定位器,值)按文本选择选项使用文本选择值。(a)定位器:标识符类型和值的字典({'by':'id','value':'start-of-content.'})。(b)文本:选择选项的字符串值。self.按文本选择选项(定位器,文本)滚动至页脚滚动到页面末尾。self.滚动至页脚()滚动至元素滚动到页面上的特定元素。(a)定位器:标识符类型和值的字典({'by':'id','value':'start-of-content.})。self.滚动至元素(定位器)javascript点击使用javscript执行单击 (a)定位器:标识符类型和值的字典({'by':'id','value':'start-of-content.})。 Endo.java(定位器)< /TD>是否显示"元素"基于元素的返回布尔值用定位器显示。(a)定位器:标识符类型和值的字典({'by':'id','value':'start-of-content.})。是否显示元素(定位器)_element_是否已启用基于元素的返回布尔值已通过locator启用。(a)定位器:标识符类型和值的字典({'by':'id','value':'start-of-content.})。self.is_element_enabled(定位器)是否选择了"元素"返回基于元素的布尔值是用locator选择的。(a)定位器:标识符类型和值的字典({'by':'id','value':'start-of-content.})。选择了self.is_element(定位器)

API测试模块

rest api模块方法摘要

<表><广告>方法名说明 参数用法< /广告><正文>APIRequest基于输入方法和kwargs触发rest api请求(a).方法:get/post/put/patch/delete(b).kwargs:参见下面rest-api-kwarg部分表self.apirest(method='get')断言_in_resp检查响应数据是否包含输入成员。(a)响应:验证响应。(b)成员:签入响应的值。(c)容器:以"resp."开头的点格式的响应密钥路径。示例:resp.data.0.nameself.assert_in_resp(resp,member,container)断言不在resp中检查响应数据是否包含输入成员。(a)响应:验证响应。(b)成员:签入响应的值。(c)容器:以"resp."开头的点格式的响应密钥路径。示例:resp.data.0.nameself.assert_not_in_resp(resp,member,container)断言_等于_resp检查响应数据是否包含输入成员。(a)响应:验证响应。(b)成员:签入响应的值。(c)容器:以"resp."开头的点格式的响应密钥路径。示例:resp.data.0.nameself.assert_equal_resp(resp,member,container)断言不等于 检查响应数据是否包含输入成员。(a)响应:验证响应。(b)成员:签入响应的值。(c)容器:以"resp."开头的点格式的响应密钥路径。示例:resp.data.0.nameself.assert_not_equal_resp(resp,member,container)

rest api kwarg部分

<表><广告>参数名称参数类型 说明 < /广告><正文> URL标准API请求URL参数可选字典,请求正文中要发送的元组或字节的列表。数据可选要在请求正文中发送的字典、元组列表、字节或类似文件的对象。json可选要在请求正文中发送的JSON可序列化Python对象。标题可选要随请求一起发送的HTTP头字典。饼干可选要随请求一起发送的dict或cookiejar对象。文件可选"name"字典:用于多部分编码上载的类似文件的对象(或{'name':文件元组})。文件元组可以是2元组('filename',fileobj)、3元组('filename',fileobj,'content_type')或4元组('filename',fileobj,'content_type',custom_headers),其中"content type"是定义给定文件的内容类型的字符串,自定义头是一个类似dict的对象,包含要为文件添加的其他头。认证可选验证元组以启用基本/摘要/自定义http验证。超时(浮点或元组)可选在放弃前等待服务器发送数据的时间(以浮点或(连接超时,读取超时)元组形式)。允许重定向(bool)可选布尔值。启用/禁用get/options/post/put/patch/delete/head重定向。默认为真。代理可选字典映射协议到代理的url。验证可选布尔值,在这种情况下,它控制是验证服务器TLS证书,还是验证字符串,在这种情况下,它必须是要使用的CA捆绑包的路径。默认为真。流可选如果为false,将立即下载响应内容。证书可选如果是字符串,则为SSL客户端证书文件(.pem)的路径。如果是元组,(证书,密钥)对。

实用程序

utils模块方法摘要的拼写检查器

这个utils模块的拼写检查器方法将捕获网页内容,并根据标准字典对其进行验证,以确保拼写正确。

<表><广告>方法名说明 参数用法< /广告><正文>拼写检查器拼写检查。(a)url:网页url(b)单词:应用程序特定单词列表拼写检查器(self,url,words=[])<

比较模块

模块具有用于比较各种文件类型的实用方法

<表><广告>方法名说明 参数用法< /广告><正文>比较图像比较图像并返回图像的结构相似性。ssim的度量值在0-1.0之间返回,其中1.0是最相同的,0是完全不同的。a)源图像路径。b)目标图像路径。自我。比较图像(源、目标)比较json比较JSON文件并返回目标与源的差异字典。a)源json。b)目标json自我。比较json(源,目标)比较文件比较两个文件并返回xl差异(如果有)。支持的文件类型是xls或xlsx csva)源文件路径。b)目标文件路径。自我比较文件(源文件、目标文件)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java爬虫获取外部网站搜索结果   java Bluestack未连接到eclipse   java如何从ConstraintViolationException Hibernamte获取数据库字段名   HttpResponse HttpResponse=httpClient引发java运行时错误。执行(httpPost);   Jama中矩阵的java点积和叉积   java有什么方法可以唯一地识别可扩展设备吗?   java我需要用*来写我的名字,但我不断遇到一个错误,我对编码很陌生   java变量是在内部类中访问的。需要被宣布为最终决定。但我不想宣布最终结果   java如何缩短base64图像字符串,Android?   JavaSpringMVC:计划方法不自动触发   图形学习Java 2D API的好资源是什么?   如何在java中对方法进行排队   java JavaFX多行   java Selenium无法在[链接]上找到基于CSS元素的密码字段元素http://www.cartasi.it/gtwpages/index.jsp   Java中的equals()和hashCode()契约   软删除情况下的java Hibernate二级缓存   java为什么这段代码要两次调用这些方法?