热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

6.10__selenium(4)

一、用例的封装fromseleniumimportwebdriverfromtimeimportsleepclassdiscuz(object):def__init__(self)

一、用例的封装

from selenium import webdriver
from time import sleep
class discuz(object):
def __init__(self): #网站
self.driver=webdriver.Chrome()
self.driver.get('http://192.168.203.128/bbs/')
self.driver.maximize_window()
self.driver.implicitly_wait(10)
def login(self,name,pwd):#登录模块
self.driver.find_element_by_id('ls_username').send_keys(name)
self.driver.find_element_by_id('ls_password').send_keys(pwd)
sleep(2)
self.driver.find_element_by_xpath('/html/body/div[5]/div/div[1]/form/div/div/table/tbody/tr[2]/td[3]/button/em').click()
def fatie(self,title,body): #发帖模块
self.login("")
self.driver.find_element_by_id('subject').send_keys(title)
el=self.driver.find_element_by_id('e_iframe')
self.driver.switch_to.frame(el)
self.driver.find_element_by_xpath('/html/body').send_keys(body)
self.driver.switch_to.default_content()
self.driver.find_element_by_id('postsubmit').click()
def search(self,content):#搜索模块
self.driver.find_element_by_id('scbar_txt').send_keys(content)
self.driver.find_element_by_id('scbar_btn').click()
def personal_center(self): #个人中心模块
self.driver.find_element_by_xpath('//*[@id="um"]/div/a/img').click() #点头像
self.driver.find_element_by_xpath('//*[@id="uhd"]/ul/li[1]/a').click() #主题管理
def news(self):#消息模块
self.driver.find_element_by_xpath('/html/body/div[6]/div/div[1]/div/p[1]/a[3]').click()
self.driver.find_element_by_xpath('//*[@id="ct"]/div[1]/div/ul/li[3]/a').click()
self.driver.find_element_by_xpath('//*[@id="ct"]/div[2]/div[1]/ul/li[3]/a').click()
if __name__ == '__main__':
xk=discuz()
# xk.login('admin','123456')
# sleep(2)
# xk.driver.get('http://192.168.203.128/bbs/forum.php?mod=post&action=newthread&fid=2')
# sleep(2)
# xk.fatie('徐凯大帅哥','是的,没错')
# xk.driver.get('http://192.168.203.128/bbs')
# sleep(3)
# xk.personal_center()
# sleep(2)
#
# xk.news()
# sleep(2)
# xk.driver.get('http://192.168.203.128/bbs')
# sleep(2)
# xk.search('徐凯')
# sleep(2)
==================================================================
二、unittest
1、介绍单元测试框架

单元测试框架
(1)python当总的unittest 框架(讲),pytest框架
a、unittest框架是python自带的库
b、pytest框架是python中第三方库
(2)unittest框架的作用:管理和组织用例
(3)unittest 框架的格式:
import  unittest  #导入unittest                                          
class Uikj(unittest.TestCase):#(定义一个类,一个testcase的实例就是用例)               
    @classmethod                                                       
    def setUpClass(cls) -> None:#类的开始                                  
        print("类的开始")                                                  
    @classmethod                                                       
    def  tearDownClass(cls) -> None: #类的结束                             
        print("类结束")                                                   
                                                                       
    def setUp(self) -> None:                                           
        print("方法的开始")                                                 
    def  tearDown(self) -> None:                                       
        print("方法结束")                                                  
    def  test01(self):                                                 
        print("111")                                                   
    def test03(self):                                                  
        print("333")                                                   
    def test02(self):                                                  
        print("222")                                                   
    def testa(self):                                                   
        print("a")                                                     
    def testA(self):                                                   
        print("A")                                                     
    def dl(self):                                                      
        print("独立")                                                    
if __name__ == '__main__':                                             
    unittest.main()
注意点:
(1)用例执行一定要是test开头;
(2)用例执行的顺序ascii表排序:0-9,A-Z,a-z
(3)类的是开始和类的结束,在框架中只运行一次
(4)方法的开始和方法结束每个用例中都执行
================================================
第二种方法:
设置环境变量

 

 

 

 

 

 

import unittest #导入unittest
class Uikj(unittest.TestCase):#(定义一个类,一个testcase的实例就是用例)
@classmethod
def setUpClass(cls) -> None:#类的开始
print("类的开始")
@classmethod
def tearDownClass(cls) -> None: #类的结束
print("类结束")
def setUp(self) -> None:
print("方法的开始")
def tearDown(self) -> None:
print("方法结束")
def test1(self):
print("111")
def test3(self):
print("333")
def test2(self):
print("222")
def testa(self):
print("a")
def testA(self):
print("A")
def dl(self):
print("独立")
if __name__ == '__main__':
# unittest.main() #第一种方法调用所有的用例
tj=unittest.TestSuite()#创建一个套件对象
# tj.addTest(Uikj("test1")) #添加用例
tj.addTests([Uikj("test1"),Uikj("test2")])
r=unittest.TextTestRunner() #创建一个执行对象
r.run(tj) #运行套件
==================================================
第三种方法:读取路径

import unittest #导入unittest
class Uikj(unittest.TestCase):#(定义一个类,一个testcase的实例就是用例)
@classmethod
def setUpClass(cls) -> None:#类的开始
print("类的开始")
@classmethod
def tearDownClass(cls) -> None: #类的结束
print("类结束")
def setUp(self) -> None:
print("方法的开始")
def tearDown(self) -> None:
print("方法结束")
def test1(self):
print("111")
def test3(self):
print("333")
def test2(self):
print("222")
def testa(self):
print("a")
def testA(self):
print("A")
def dl(self):
print("独立")
if __name__ == '__main__':
# unittest.main() #第一种方法调用所有的用例
# tj=unittest.TestSuite()#创建一个套件对象
# tj.addTest(Uikj("test1")) #添加用例
# tj.addTests([Uikj("test1"),Uikj("test2")])
# r=unittest.TextTestRunner() #创建一个执行对象
#
# r.run(tj) #运行套件
#
lj=r"C:\Users\Administrator\PycharmProjects\gs2\gsml\gs_ui" #相对路径
d=unittest.TestLoader().discover(start_dir=lj,pattern="ui_kuangjian*.py")#
r=unittest.TextTestRunner()
r.run(d)

==================================================
结合测试报告;
测试报告模板:

 

 



==================================================

总结:
一、unittest的介绍
当我们写的用例越来越多时,我们就需要考虑用例编写的规范与组织,以便于后期的维护,而unittest正是这样一款工具
二、unittest是Python自带的标准库中的模块,其中包括:
1、TestCase类
2、TestSuite类
3、TestLoader类
4、TextTestRunner类
5、TextTestResult类
6、TestFixture类
解释下:
TestCase:
一个Testcase的实例就是一个测试用例,测试用例就是一个完整的测试流程,包括初始化setUp、运行run、测试后的还原tearDown
TestSuite:
对一个功能的测试往往需要多测试用例的,可以把多的测试用例集合在一起执行,这就是TestSuite的概念。常用addTest()方法将一个测试用例添加到测试套件中
TextTestRunner:
是用来执行测试用例的,其中的run(test)用来执行TestSuite/TestCase。测试的结果会保存在TextTestResult实例中
TestFixture:
测试准备前要做的工作和测试执行完后要做的工作.包括setUp()和tearDown()。通过覆盖TestCase的setUp和tearDown来实现。
TestLoader:
是用来搜索所有以test开头的测试用例,然后将其加入到testsuite中
图形化解释:如下图

 

 

三、框架的组成
在写测试类以及测试用例时要规定一个命名习惯,一般测试类可以以Test开头,也可以以Test结尾。测试用例一般是以test开头。
eg:结构如下:
import unittest #导入unittest包
#创建测试类:从unittest.TestCase继承
classRomanNumeralConverterTest(unittest.TestCase):
def setUp(self): #初始化测试环境
def tearDown(self): #还原测试环境
def test_case(self):测试用例



推荐阅读
  • 在跨浏览器开发中,一个常见的问题是关于如何在鼠标悬停时显示图片提示信息。本文深入探讨了 IE 浏览器对 IMG 元素 alt 属性的特殊处理,并提供了最佳实践建议。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 本文详细介绍了如何解决Uploadify插件在Internet Explorer(IE)9和10版本中遇到的点击失效及JQuery运行时错误问题。通过修改相关JavaScript代码,确保上传功能在不同浏览器环境中的一致性和稳定性。 ... [详细]
  • 本文详细介绍了Java中org.eclipse.ui.forms.widgets.ExpandableComposite类的addExpansionListener()方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。这些示例来源于多个知名开源项目,具有很高的参考价值。 ... [详细]
  • 如何高效创建和使用字体图标
    在Web和移动开发中,为什么选择字体图标?主要原因是其卓越的性能,可以显著减少HTTP请求并优化页面加载速度。本文详细介绍了从设计到应用的字体图标制作流程,并提供了专业建议。 ... [详细]
  • ASP.NET MVC中Area机制的实现与优化
    本文探讨了在ASP.NET MVC框架中,如何通过Area机制有效地组织和管理大规模应用程序的不同功能模块。通过合理的文件夹结构和命名规则,开发人员可以更高效地管理和扩展项目。 ... [详细]
  • 利用Selenium与ChromeDriver实现豆瓣网页全屏截图
    本文介绍了一种使用Selenium和ChromeDriver结合Python代码,轻松实现对豆瓣网站进行完整页面截图的方法。该方法不仅简单易行,而且解决了新版Selenium不再支持PhantomJS的问题。 ... [详细]
  • Python自动化测试入门:Selenium环境搭建
    本文详细介绍如何在Python环境中安装和配置Selenium,包括开发工具PyCharm的安装、Python环境的设置以及Selenium包的安装方法。此外,还提供了编写和运行第一个自动化测试脚本的步骤。 ... [详细]
  • 本文详细比较了CSS选择器和XPath在Selenium中通过页面结构定位元素的优劣,并提供了具体的代码示例,帮助读者理解两者在不同场景下的适用性。 ... [详细]
  • 探讨如何高效使用FastJSON进行JSON数据解析,特别是从复杂嵌套结构中提取特定字段值的方法。 ... [详细]
  • 深入解析Spring Cloud Ribbon负载均衡机制
    本文详细介绍了Spring Cloud中的Ribbon组件如何实现服务调用的负载均衡。通过分析其工作原理、源码结构及配置方式,帮助读者理解Ribbon在分布式系统中的重要作用。 ... [详细]
  • 本文介绍了在Windows环境下使用pydoc工具的方法,并详细解释了如何通过命令行和浏览器查看Python内置函数的文档。此外,还提供了关于raw_input和open函数的具体用法和功能说明。 ... [详细]
  • Vue 开发与调试工具指南
    本文介绍了如何使用 Vue 调试工具,包括克隆仓库、安装依赖包、构建项目以及在 Chrome 浏览器中加载扩展的详细步骤。 ... [详细]
author-avatar
红台门
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有