ある記事では、データドリブンの UI 自動テストを 0 から 1 まで段階的に説明しています。

UI自動テストでは、テストに使用するデータをファイルに分割する必要がありますが、単にテストモジュールに記述するだけでは良い設計とは言えませんので、どのような自動テストであっても、データは分離されています。もちろん、ひと口にファイルと言っても、実際にはさまざまな形式のファイルが存在しますが、ここでは主に UI 自動テストにおける JSON ファイルと YAML ファイルの適用について説明します。

1.JSONファイル

JSON ライブラリは、主にシリアル化と逆シリアル化、特に API の自動テストで使用されます。シリアル化と逆シリアル化は、ナレッジ システムで習得する必要があるテクノロジ スタック システムです。もちろん、ファイルをシリアル化および逆シリアル化することもできます。ファイルのシリアル化は、単にサードパーティのデータをファイルに書き込むこととして理解できます。JSON ライブラリで使用されるメソッドは dump() メソッドです。ファイルのシリアル化のサポートは次のように理解できます。 JSON ライブラリのload() メソッドを使用して、ファイルからデータを読み取ります。以下は主に UI 自動テスト用にデータを分離するためのものです。具体的なコードは次のとおりです。

import unittest
from parameterized import  parameterized,param
from selenium  import  webdriver
import  time as t

#parameterized是参数化库

class AddTest(unittest.TestCase):

    def setUp(self) -> None:
        self.driver=webdriver.Chrome()
        self.driver.maximize_window()
        self.driver.implicitly_wait(30)
        self.driver.get('https://mail.sina.com.cn/#')

    def tearDown(self) -> None:
        self.driver.quit()


    @parameterized.expand([
        param('','','请输入邮箱名'),
        param('srtSA','saert','您输入的邮箱名格式不正确'),
        param('[email protected]','asdfrty','登录名或密码错误')
    ])
    def test_sina_email(self,username,password,result):
        t.sleep(2)
        self.driver.find_element_by_id('freename').send_keys(username)
        t.sleep(2)
        self.driver.find_element_by_id('freepassword').send_keys(password)
        t.sleep(2)
        self.driver.find_element_by_link_text('登录').click()
        t.sleep(3)
        div=self.driver.find_element_by_xpath('/html/body/div[3]/div/div[2]/div/div/div[4]/div[1]/div[1]/div[1]/span[1]')
        assert div.text==result

if __name__ == '__main__':
    unittest.main(verbosity=2)

上のファイルからわかるように、テスト データを JSON ファイルに分割できます。分割されたデータは具体的には次のとおりです。

{
  "data":
  [
    {"username": "","password": "","text": "请输入邮箱名"},
    {"username": "srtSA","password": "saert","text": "您输入的邮箱名格式不正确"},
    {"username": "[email protected]","password": "asdfrty","text": "登录名或密码错误"}
  ]
}

改良されたテスト スクリプトは次のとおりです。

import unittest
from parameterized import  parameterized,param
from selenium  import  webdriver
import  time as t
import  json

def readJson():
   return json.load(open('sina.json'))['data']

class AddTest(unittest.TestCase):

   def setUp(self) -> None:
      self.driver=webdriver.Chrome()
      self.driver.maximize_window()
      self.driver.implicitly_wait(30)
      self.driver.get('https://mail.sina.com.cn/#')

   def tearDown(self) -> None:
      self.driver.quit()


   @parameterized.expand([
      param(readJson()[0]['username'],readJson()[0]['password'],readJson()[0]['text']),
      param(readJson()[1]['username'],readJson()[1]['password'],readJson()[1]['text']),
      param(readJson()[2]['username'],readJson()[2]['password'],readJson()[2]['text'])
   ])
   def test_sina_email(self,username,password,result):
      t.sleep(2)
      self.driver.find_element_by_id('freename').send_keys(username)
      t.sleep(2)
      self.driver.find_element_by_id('freepassword').send_keys(password)
      t.sleep(2)
      self.driver.find_element_by_link_text('登录').click()
      t.sleep(3)
      div=self.driver.find_element_by_xpath('/html/body/div[3]/div/div[2]/div/div/div[4]/div[1]/div[1]/div[1]/span[1]')
      assert div.text==result


if __name__ == '__main__':
   unittest.main(verbosity=2)
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:110685036

2.YAMLファイル

以下では、テスト データを YAML ファイルに保存する方法を示します。分離されたファイルの内容は次のとおりです。

username: ""
password: ""
text: "请输入邮箱名"

---
username: "srtSA"
password: "saert"
text: "您输入的邮箱名格式不正确"

---
username: "[email protected]"
password: "asdfrty"
text: "登录名或密码错误"

改良されたテスト スクリプトは次のとおりです。

import unittest
from parameterized import  parameterized,param
from selenium  import  webdriver
import  time as t
import  json
import yaml

def readJson():
   return json.load(open('sina.json'))['data']


def readYaml():
   with open('sina.yaml') as f:
      return list(yaml.unsafe_load_all(f))

class AddTest(unittest.TestCase):

   def setUp(self) -> None:
      self.driver=webdriver.Chrome()
      self.driver.maximize_window()
      self.driver.implicitly_wait(30)
      self.driver.get('https://mail.sina.com.cn/#')

   def tearDown(self) -> None:
      self.driver.quit()


   @parameterized.expand([
      param(readYaml()[0]['username'],readYaml()[0]['password'],readYaml()[0]['text']),
      param(readYaml()[1]['username'],readYaml()[1]['password'],readYaml()[1]['text']),
      param(readYaml()[2]['username'],readYaml()[2]['password'],readYaml()[2]['text'])
   ])
   def test_sina_email(self,username,password,result):
      t.sleep(2)
      self.driver.find_element_by_id('freename').send_keys(username)
      t.sleep(2)
      self.driver.find_element_by_id('freepassword').send_keys(password)
      t.sleep(2)
      self.driver.find_element_by_link_text('登录').click()
      t.sleep(3)
      div=self.driver.find_element_by_xpath('/html/body/div[3]/div/div[2]/div/div/div[4]/div[1]/div[1]/div[1]/span[1]')
      assert div.text==result


if __name__ == '__main__':
   unittest.main(verbosity=2)

以上、UI自動テストにおいて、使用するテストデータをJSONファイルとYAMLファイルに分離できることを詳しく示しましたが、これによりデータ分離が実現され、テストの簡素化・効率化が図られます。

最後に、私の記事をよく読んでくださった皆様に感謝申し上げます。ファンの増加と注目度を見ると、常に礼儀があります。それほど価値のあるものではありませんが、使用できる場合は直接受け取ることができます!

ソフトウェアテスト面接文書

私たちは高給の仕事を見つけるために勉強しなければなりません。以下の面接の質問は、アリババ、テンセント、バイトなどの一流インターネット企業の最新の面接資料であり、一部のバイトの上司が権威ある回答をしています。面接情報に基づいて、誰もが満足のいく仕事を見つけることができると思います。
 

ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/jiangjunsss/article/details/133358043
おすすめ