ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

6.10__selenium(4)

2022-06-12 09:37:11  阅读:187  来源: 互联网

标签:__ driver self 6.10 selenium print unittest def


一、用例的封装

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):测试用例

标签:__,driver,self,6.10,selenium,print,unittest,def
来源: https://www.cnblogs.com/xukairoot/p/16367381.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有