パイソン+セレンのWeb自動化フレームワーク

まず、セレンは何ですか?

セレンは、彼女は、クロスプラットフォーム、クロスブラウザのWeb-to-endの自動化ソリューションを提供し、ブラウザベースの自動化ツールです。セレンIDE、セレンwebdriverをとSeleniumグリッド:セレンは主に3つの部分が含まれています。

1、セレンIDE:Firefoxの拡張機能は、記録を再生することができ、記録動作は、テストケースの形に(例えば、Java(登録商標)、Pythonの、等)である言語を派生することができます。

2、セレンwebdriverを:ページ要素を選択し、デバッグ、必要に応じて自動化のWeb API、主に使用するブラウザコントロールを提供することを目的とします。異なるブラウザは異なるwebdriverをする必要があります。

3、セレングリッド:異なるブラウザで異なるマシン上でSeleniumテストを実行する機能を提供

ビルド、テスト自動化フレームワークにセレンwebdriverをPythonライブラリと組み合わせて、本明細書中で使用されます。

第二に、自動テストフレームワーク

典型的な自動テストフレームワークの実施形態は、一般に、管理モジュール、自動実行制御、およびレポート生成モジュール互いに補完ログモジュールを含みます。

1.png

次は、各モジュールの論理ユニットを導入します。

図1に示すように、管理モジュールケースと

 用例管理模块包括新增、修改、删除等操作单元,这些单元又会涉及到用例书写模式,测试数据库的管理、可复用库等。

2、オートメーションコントローラ

   控制器是自动化用例执行的组织模块,主要是负责以什么方法执行我们的测试用例

3、レポート生成モジュール

   主要负责执行用例后的生成报告,一般以HTML格式居多,信息主要是用例执行情况。另外还可以配置发送邮件功能。

図4に示すように、ログモジュール

   主要用来记录用例执行情况,以便于高效的调查用例失败信息以及追踪用例执行情况。

第三に、設計と自動化フレームワーク

1、分析を必要とします

まず、テストオブジェクトは、テストケース管理、テスト実行制御部の生成、テストレポートやテストログを含めるには、このプラットフォームの設計フレームワークに基づいたWebプラットフォームです。

2、設計と実装

   1)页面管理

仮説は、典型的な単一ページのアプリケーションにWebオブジェクトをテストするので、私たちは、ページモードを使用します。ページモード

ページとテストケースとの間のリンクは、各ページには、試験にページ要素の位置決めおよび動作を提供するために、単一のクラスに抽象化されています。

   BaseClass作为父类只包含driver成员变量,用来标识Selenium中的WebDriver,以便在子类中定位页面元素。LoginClass和PageClass作为子类,可以提供页面元素的定位和操作方法。比如登录页面。

2.png

それぞれ動作させるために必要な要素、ログインユーザー名、パスワードを確認し、自動的に次のログインボタンをログに記録するページから、特定のコードは次の通りです:

ページの親BaseClass.py

3.png

LoginClassがBaseClassのから継承し、その要素は、ログインして操作の実装を配置します。そして、コードのユーザー名・パスワードを見つけると、ユーザー名とオペレータのパスワードを追加します。

4.png

2)公共库模块

公共库模块是为创建测试用例服务的,主要包括常量、公共函数、日志、报告等。

Common.py

5.png

测试用例信息类用来标识测试用例,并且包括执行用例、执行结果信息,主要包括以下字段。

6.png

日志主要用来记录测试用例执行步骤及产生的错误信息,不同的信息有不同的日志级别,比如Information,Warning,Critical和Debug。由于每个测试用例产生的日志条目比较少,所以在测试框架中只利用了最高级别的日志打印,即Debug级别,该级别也会将其他所有的日志级别的信息同样打印出来。在具体的实现中引用了Python标准库中的logging类库,以便更方便的控制日志输出。

   3)测试用例仓库

用例仓库主要用来组织自动化测试用例。每条测试用例都被抽象成一个独立的类,并且均继承自unittest.TestCase类。 Python中的unittest库提供了丰富的测试框架支持,包括测试用例的setUp和tearDown方法,在实现用例的过程中可以重写。依托页面管理和公共库模块实现的页面方法和公共函数,每一个测试用例脚本的书写都会非常清晰简洁。

7.png

从这个测试用例中,我们可以看到

Setup中定义了执行测试用例前的一些实例化工作

tearDown对执行完测试做了清理和写日志文件工作

测试步骤、测试数据和测试检查点非常清晰,易修改(比如用户名密码)

日志级别仅有Debug,所以写日志仅需用同一Log方法

3)用例执行模块

执行模块主要用来控制测试用例脚本的批量执行,形成一个测试集。用例的执行引用了Python标准库中的subprocess来执行nosetests的shell命令,从而执行给定测试用例集中的用例。测试用例集是一个简单的纯文本文件,实现过程中利用了.txt文件testcases.txt

8.png

用例前没有“#“标记的测试用例脚本会被执行,而有”#“标记的则会被忽略,这样可以很方便的控制测试集的执行,当然也可以创建不同的文件来执行不同的测试集。 

四、需要改进的模块

对于现有实现的测试框架,已经可以满足web对象的自动化需求,但还是有些可以改进提高的地方,比如:

1)部分用例可以尝试数据驱动

2)二次封装selenium的By函数,以便更高效定位元素

3)没有进行持续化集成

五、总结

SeleniumのWebベースの自動化フレームワークは、軽量でありながらも柔軟性だけでなく、実装されており、迅速なフレームワークの設計Benpianといくつかの良い習慣を結合、自動化されたテストケースを開発することができ、我々は、ヘルプへのWeb自動化フレームワークの将来設計と実装のために願っています。

おすすめ

転載: www.cnblogs.com/6J2B2/p/12145648.html