热门标签 | 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):测试用例



推荐阅读
  • 本文将介绍如何编写一些有趣的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库,提供了详细的代码示例和优化建议。 ... [详细]
  • 本文详细介绍了Java中org.neo4j.helpers.collection.Iterators.single()方法的功能、使用场景及代码示例,帮助开发者更好地理解和应用该方法。 ... [详细]
  • 本文详细介绍了Java中org.eclipse.ui.forms.widgets.ExpandableComposite类的addExpansionListener()方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。这些示例来源于多个知名开源项目,具有很高的参考价值。 ... [详细]
  • 深入解析Spring Cloud Ribbon负载均衡机制
    本文详细介绍了Spring Cloud中的Ribbon组件如何实现服务调用的负载均衡。通过分析其工作原理、源码结构及配置方式,帮助读者理解Ribbon在分布式系统中的重要作用。 ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 本文详细介绍了如何构建一个高效的UI管理系统,集中处理UI页面的打开、关闭、层级管理和页面跳转等问题。通过UIManager统一管理外部切换逻辑,实现功能逻辑分散化和代码复用,支持多人协作开发。 ... [详细]
  • 本文详细介绍了如何在BackTrack 5中配置和启动SSH服务,确保其正常运行,并通过Windows系统成功连接。涵盖了必要的密钥生成步骤及常见问题解决方法。 ... [详细]
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
  • 本文详细介绍了 Apache Jena 库中的 Txn.executeWrite 方法,通过多个实际代码示例展示了其在不同场景下的应用,帮助开发者更好地理解和使用该方法。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • 本文介绍如何使用阿里云的fastjson库解析包含时间戳、IP地址和参数等信息的JSON格式文本,并进行数据处理和保存。 ... [详细]
  • Python自动化测试入门:Selenium环境搭建
    本文详细介绍如何在Python环境中安装和配置Selenium,包括开发工具PyCharm的安装、Python环境的设置以及Selenium包的安装方法。此外,还提供了编写和运行第一个自动化测试脚本的步骤。 ... [详细]
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社区 版权所有