找回密码
 立即注册

推荐阅读

  • 便民服务
  • 关注我们
  • 社区新手
一、常见的断言:
1、assertequal
2、assertnotequal
3、asserttrue
4、assertfalse
(一)获取文本值进行断言
#获取文本值
from selenium import webdriver
from time import sleep
driver=webdriver.Chrome()
driver.get("https://www.baidu.com")
driver.maximize_window()
sleep(2)
text=driver.find_element_by_xpath('//*[@id="u1"]/a[1]').text #获取文本值
print text
if not (text==u"新闻"):
    print "%s"%text
    assert False
driver.find_element_by_id("kw").send_keys("yy") #使用assert false进行断言
(二)、获取value值进行断言
#获取value值
a=driver.find_element_by_xpath('//*[@id="su"]').get_attribute("value")
if not (a==u"百度一下"):
    print "%s"%a
    assert False
driver.find_element_by_xpath('//*[@id="kw"]').send_keys("yy")
#使用assert false进行断言

二、框架
unittest 是python自带的一个框架。
使用unittest框架执行用例的优点:提供用例组织方法和用例执行方法;提供丰富日志和清晰用例执行后的测试报告
unittest中包括:testcase类、testsuite类、texttestrunner类
使用unittest框架执行用例时,对我们用例命名有一定的要求,因为我们的测试类都是以test开头,那么我们的测试用例同样以test打头进行命名。
(一)框架
from selenium import webdriver
from time import sleep
import unittest#导入对应的unittest框架包
#unittest框架结构
#首先创建测试类,该且要继承testcase类
class foo(unittest.TestCase):
    def setUp(self):#初始化测试环境
#sutUp是用于设置用例初始化部分,在测试用例执行前,这个方法中的函数(脚本)将先会执行如对浏览器操作,链接数据库等。
        pass
    def test_login(self):#所有执行的测试用例一个或者多个
        pass
    def test_info(self):
        pass
    def tearDown(self):#还原测试环境,每执行一个用例都会执行该方法,保证下一个用例执行的环境
#tearDown该方法是在用例执行后调用,主要用来还原环境如:退出浏览器,关闭数据库
        pass
if __name__=="__main__":#执行测试用例
    unittest.main() main代表自己
(二)执行单个用例
from selenium import webdriver
from time import sleep
import unittest
class foo(unittest.TestCase):
    def setUp(self):
        self.dr=webdriver.Chrome()
        self.dr.get("https://www.baidu.com")
        self.dr.maximize_window()
        sleep(2)
    def test_login(self):
        self.dr.find_element_by_id("kw").send_keys(u"多测师")
        self.dr.find_element_by_id("su").click()
        sleep(6)
    def test_info(self):
        pass
    def tearDown(self):
        self.dr.quit()
if __name__=="__main__":
    unittest.main()
(二)执行用例集
如:在百度中完成多测师、达内、北大青鸟等机构搜索
from selenium import webdriver
from time import sleep
import unittest
class foo(unittest.TestCase):
    def setUp(self):
        self.dr=webdriver.Chrome()
        self.dr.get("https://www.baidu.com")
        self.dr.maximize_window()
        sleep(2)
    def test_dcs(self):
        self.dr.find_element_by_id("kw").send_keys(u"多测师")
        self.dr.find_element_by_id("su").click()
        sleep(6)
    def test_dn(self):
        self.dr.find_element_by_id("kw").send_keys(u"达内")
        self.dr.find_element_by_id("su").click()
        sleep(6)
    def test_bd(self):
        self.dr.find_element_by_id("kw").send_keys(u"北大青鸟")
        self.dr.find_element_by_id("su").click()
        sleep(6)
    def tearDown(self):
        self.dr.quit()
if __name__=="__main__":
   # 首先构造测试用例集(suite),可以理解成构造一个容器名字为suite后续将用例放在该容器中执行。
    suite=unittest.TestSuite()
    suite.addTest(foo("test_dcs"))
    suite.addTest(foo("test_dn"))
    suite.addTest(foo("test_bd"))
    #执行用例
    t=unittest.TextTestRunner()
    t.run(suite)
构造测试用例集方法二:suite.addTests([foo("test_dcs"),foo("test_dn"),foo("test_bd")])

(三)打印报告
from selenium import webdriver
from time import sleep
import unittest
import HTMLTestRunnerCN #导入模块
class foo(unittest.TestCase):
    def setUp(self):
        self.dr=webdriver.Chrome()
        self.dr.get("https://www.baidu.com/")
        self.dr.maximize_window()
        sleep(4)
    def test_dcs(self):
        self.dr.find_element_by_id("kw").send_keys(u"多测师")
        self.dr.find_element_by_id("su").click()
        sleep(5)
    def test_dn(self):
        self.dr.find_element_by_id("kw").send_keys(u"达内")
        self.dr.find_element_by_id("su").click()
        sleep(5)
    def test_bd(self):
        self.dr.find_element_by_id("kw").send_keys(u"北大青鸟")
        self.dr.find_element_by_id("su").click()
        sleep(5)
    def tearDown(self):
        self.dr.quit()
def suit():#构造测试用例集
    suite=unittest.TestSuite()
    suite.addTests([foo("test_dcs"), foo("test_dn"), foo("test_bd")])
    return suite
if __name__=="__main__":#执行测试用例
    yy=suit()
    html="e:\\XIAOCHEN.HTML"#打开报告路径
    fp=file(html,"wb")
#wb表示只写打开或者新建一个二进制文件,只允许写数据
    run=HTMLTestRunnerCN.HTMLTestRunner(stream=fp,title=u"百度搜索报告",description=u"用例执行情况",)
    run.run(yy)

注意:如果没有出现报告或者报告没有内容,尝试以下操作:
第一步:点击 edit configurations新建
第二步:点加号,再点击python,然后新建name,script找到文件位置,点击apply,再点击ok。

(四)python操作数据库测试
      首先需要导入一个模块mysqldb的库
游标:SQL的游标是一种临时的数据库对象,即可以用来存放在数据库表中的数据行副本,也可以指向存储在数据库中的数据行的指针,游标的一个常见用途就是保存查询结果,以便以后使用(游标是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果)
方法:
cursor():我们连接数据库获取一个cursor()游标,我们可以通过该游标提供的方法来完成我们的操作。
方法包括两大类:a、执行sql语句;b、接收sql执行后的返回值
方法一:fetchone():该方法返回的是单个的元组,也就是一条记录,没有结果则返回None。
方法二:execute():该方法用来执行sql语句.
方法三:fetchall():该方法返回的是多个的元组,也就是一条记录,没有结果则返回None。
方法四:fetchmany(3):该方法是返回指定行的数据记录,也就是一条记录,没有结果则返回None,这里的"3,表示数据库中前3行记录
1、如何查询数据:
import MySQLdb
db=MySQLdb.connect("192.168.0.91","cqm","123456","dcs32",charset="utf8")#链接数据库,charset="utf-8"处理中文问题
cursor=db.cursor()#获取一个cursor对象
cursor.execute("select name from dcs1 where id=8 ")#执行sql语句
yy=cursor.fetchone()#提取执行语句后的结果,单值获取
print "%s"%yy
db.close()#关闭数据库

2、如何插入数据:用for循环
import MySQLdb
db=MySQLdb.connect("192.168.0.91","cqm","123456","dcs32",charset="utf8")
cursor=db.cursor()
for i in range(10):
    sq='insert into fdcs32 (name,age,sex,class) values("x","1","1","1")'
    cursor.execute(sq)
db.close()
3、插入不同的数据:用;隔开
import MySQLdb
db=MySQLdb.connect("192.168.0.91","cqm","123456","dcs32",charset="utf8")
cursor=db.cursor()
sq='insert into fdcs32 (name,age,sex,class) values("x","1","1","1");insert into fdcs32 (name,age,sex,class) values("xiaochen","1","1","1")'
cursor.execute(sq)
db.close()
4、获取多个数据
import MySQLdb
db=MySQLdb.connect("192.168.0.91","cqm","123456","dcs32",charset="utf8")
cursor=db.cursor()
cursor.execute("select name from fdcs32")
yy=cursor.fetchall()#多值
print yy
print type(yy)
print yy[2]#通过索引取值
for i in yy:#使用for完成对元组的遍历
    print "%s"%i
db.close()

分享至 : QQ空间
收藏

0 个回复

您需要登录后才可以回帖 登录 | 立即注册