亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

舉例詳解PHP腳本的測試方法

2020-03-22 20:03:27
字體:
來源:轉載
供稿:網友
一、常用測試示例我們經常會遇到這種情況:將一些沒有經過任何測試的遺留代碼進行重新編寫測試,甚至這些代碼還是用html' target='_blank'>面向對象寫的。要對這樣的代碼進行測試,我的建議是把代碼分解成塊,這樣就容易測試了。然而,這些遺留代碼并不是那么好重構的,比如:測試前,你不能在把代碼重新編寫,這是為了避免影響原有程序,當然也不好進行單元測試。在PHP程序中,通常有一部分代碼是寫在幾個index.php和script.php文件中的,這些.php文件存放在幾個不同的文件夾里。如果不找到它們的入口點,是無法直接由Web服務器訪問的。測試副本要測試一個PHP腳本,我們需要模擬一個HTTP請求,并檢查返回的響應(response)是否等于預期值。這里需要注意的是模擬一個請求,要定義response和request,這不僅僅是內容(content)的不同,而且他們的頭信息(header)也是不同的。此外,如果我們想要測試一個操作數據的事務腳本,我們要確保不讓它去連接真正的數據庫應用程序的其余部分。在現實中,通常沒有人會直接拿原有的PHP腳本進行重寫測試。因為怕把代碼弄得不可恢復。我建議使用PHP腳本的副本,這樣我們就可以將PHP代碼進行一些小手術了。如何將代碼進行最小修改:刪除include和require語句(如果它們沒有被用到),并且修改內部函數的調用方式,例如:將header()寫成$object- header()。最后,我們來測試這個事務腳本。測試完后,我們可以從副本腳本中提取出它們,并把它們放入新腳本文件中。具體步驟一、模擬一個HTTP請求并重新定義變量$_GET和$_POST,還要修改$_SERVER的header。二、獲取請求響應,response的body可以通過ob_start()和ob_get_clean()捕獲,它可以收集每一個用echo()或以 php標簽輸出的buffer(緩沖內容)。注意:輸出緩沖支持在PHP多個級別的嵌套,所以在大多數情況下,都可以捕獲到,即使腳本在使用ob_*調用本身。三、測試腳本應包含事務腳本的內部方法,因此在這個腳本范圍內的方法都可以被調用。例如:
1.腳本所需的變量可以被定義為局部變量封裝起來,如$connection作為一個數據庫連接。
2.不是原本PHP的內置函數,應該加上對象來調用,如:header()寫成$this- header()。具體代碼這就是我們要測試的事務腳本對象,具體到腳本中,我們還需要封裝:
class ForumPosting private $headers = array(); public function handleRequest($postRequest) $_POST = $postRequest; $connection = $this- getAConnection(); ob_start(); include 'forum/post_new_copy.php'; $content = ob_get_clean(); return array( 'content' = $content, 'headers' = $this- headers private function header($headerLine) $this- headers[] = $headerLine;這是我們的測試代碼:public function testANewPostIsCreated() $action = new ForumPosting(); $response = $action- handleRequest(array( 'id_thread' = 42, 'text' = 'Hello, world', $this- assertEquals('...', $response['content']); $this- assertContains('Content-type: text/html', $response['headers']);測試副本只是暫時的!它讓我們編寫的測試不會改變。最終,我們要將已經通過測試的PHP腳本進行重構,以消除冗余代碼。當我們的測試完成后,可以將handleRequest()的內容替換成真正的邏輯代碼。假如你要寫很多這樣的測試腳本,你可以寫一個通用的測試對象,以滿足你的測試需要。

二、PHP開發者的單元測試工具包在PHP領域,單元測試的工具主要有PHPUNIT,PHPUNIT2和SimpleTest三種。其中PHPUNIT在功能上很簡單,不算完善;PHPUNIT2是專門為PHP5寫的單元測試工具,在結構和功能上都向Junit看齊;而SimpleTest則是一套非常實用的測試工具,其中的webTest支持對web程序界面的測試,是Easy最為推薦的一款測試工具。在本文中,我們選擇SimpleTest進行介紹。相關知識:PHPUNIT2也是一款很好的工具,尤其是架構上有很多值得圈點之處,希望將來能有機會在專門的文章中和大家分享。SimpleTest:就是這么Simple安裝SimpleTest很簡單,上sf.net上下載一個源碼包,然后解壓到web目錄下就可以使用了,這里就不多說。下面我們先來看個例子:編寫一個測試,檢查一個網站是否可以訪問。首先我們引入要用到的文件:代碼列表:require_once("../simpletest/unit_tester.php");require_once("../simpletest/web_tester.php");require_once("../simpletest/reporter.php");然后我們創建一個測試類:代碼列表:class TestOfSite extends WebTestCase function TestOfSite() $this- WebTestCase("測試"); function testSite() $this- get("http://howgo.net/prettyface/display.php"); $this- assertTitle(".: facebook :.");首先我們擴展了webTestCase類,這樣我們就可以自動獲得測試web的能力,然后在構造函數中我們直接使用基類的,只是把標題傳給它。接著我們就該寫測試方法了,測試方法都是以‘test"開頭的,用以識別在我們運行測試的時候,類中哪些方法要進行調用。而$this- get將取得網頁的內容,我們指定它的標題為 ".: facebook :.", 接著我們要做的就是實例化這個類的對象,并運行它。代碼列表:$test = &new TestOfSite();$test- run(new HtmlReporter());下邊是運行結果:如果測試出錯則會出現下邊的界面:到這里一個簡單的測試就算完成了。實戰演習 – 一個Login測試下面我們進入實戰,在這個基礎上完成一個login的測試。這次我們先貼出完整的代碼:代碼列表:require_once("../simpletest/unit_tester.php");require_once("../simpletest/web_tester.php");require_once("../simpletest/reporter.php");class TestOfLogin extends WebTestCase function TestOfLogin() $this- WebTestCase("Login測試"); function testLoginOk() // 取得頁面 $this- get("http://howgo.net/prettyface/login.php"); // 添加測試表項 $this- setField("name","Easy"); $this- setField("pass","******"); // 提交 $this- clickSubmit("提交"); // 察看提交后返回頁面是否正確 $this- assertWantedPattern("/成功登錄/"); // 點擊頁面鏈接 $this- clickLink("點擊這里進入管理頁面"); // 察看指定頁面標題和關鍵內容 $this- assertTitle("ADMINCP"); $this- assertWantedPattern("/請選擇要進行的任務/"); // 退出登陸 $this- clickLink("退出管理"); $this- clickLink
PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
浅井舞香一区二区| 国产精品国产自产拍高清av水多| 亚洲国产91色在线| 亚洲精品视频网上网址在线观看| 精品久久久久国产| 国产福利精品在线| 中文字幕亚洲欧美在线| 欧美与欧洲交xxxx免费观看| 欧美丰满老妇厨房牲生活| 亚洲天堂免费观看| 国产精品入口日韩视频大尺度| 日韩在线视频观看正片免费网站| 精品久久久久久中文字幕大豆网| 91久久久久久久久久| 色综合久久久久久中文网| 久久亚洲综合国产精品99麻豆精品福利| 欧美性极品少妇精品网站| 91精品国产九九九久久久亚洲| 国产美女扒开尿口久久久| 色综合色综合网色综合| 亚洲欧美成人在线| 国产91热爆ts人妖在线| 国产91av在线| 日韩高清免费在线| 成人国产精品久久久久久亚洲| www.亚洲人.com| 欧美日韩成人精品| 国产精品一区二区久久久久| 欧美激情一区二区三区成人| 久久噜噜噜精品国产亚洲综合| 91精品在线播放| 欧美成人h版在线观看| 国产精品爱啪在线线免费观看| 亚洲欧洲一区二区三区在线观看| 亚洲va久久久噜噜噜久久天堂| 456亚洲影院| 91九色在线视频| 亚洲国产成人av在线| 久久精品国产亚洲| 欧美一级视频在线观看| 亚洲一区中文字幕在线观看| 日韩精品中文字幕久久臀| 欧美激情精品久久久久久蜜臀| 91极品视频在线| 国产日韩欧美在线观看| 国产精品久久久久一区二区| 日韩精品免费综合视频在线播放| 91影视免费在线观看| 97香蕉超级碰碰久久免费的优势| 亚洲精品网址在线观看| 欧美大肥婆大肥bbbbb| 一本色道久久88综合亚洲精品ⅰ| 久久久精品免费视频| 欧美激情一级欧美精品| 欧美日韩国产精品专区| 欧美最猛性xxxxx(亚洲精品)| 日韩一区二区三区在线播放| 精品久久久久久久久久| 26uuu另类亚洲欧美日本老年| 久久6免费高清热精品| 精品久久久久久久久久久| 亚洲天堂免费观看| 夜夜嗨av色综合久久久综合网| 国产精品欧美久久久| 亚洲日韩中文字幕| 久久99国产精品久久久久久久久| 色在人av网站天堂精品| 国产精品日本精品| 亚洲国产精品999| 欧美视频在线观看免费网址| 国产精品永久免费观看| 91伊人影院在线播放| 国产热re99久久6国产精品| 日韩在线视频国产| 97色在线观看免费视频| 久久精品视频在线| 亚洲精品美女免费| 欧美另类在线播放| 欧美人与性动交a欧美精品| 伊人av综合网| 久久国产加勒比精品无码| 欧美性在线视频| 欧美一区二区三区免费视| 国产日韩在线亚洲字幕中文| 午夜精品一区二区三区在线视| 91久久精品一区| 成人黄色网免费| 一区二区三区亚洲| 国产成人精品日本亚洲专区61| 亚洲欧美国产日韩天堂区| 亚洲视频日韩精品| 欧美电影在线播放| 国产丝袜一区二区| 国产精品视频专区| 91日本在线观看| 国产亚洲欧美aaaa| 国产精品美女www爽爽爽视频| 国产日韩在线免费| 日韩欧美亚洲成人| 91精品在线影院| 欧美激情第99页| 国产在线拍偷自揄拍精品| 中日韩美女免费视频网址在线观看| 日韩一二三在线视频播| 亚洲韩国日本中文字幕| 亚洲性夜色噜噜噜7777| 久久久久久高潮国产精品视| 国产成人综合亚洲| 欧美亚洲成人免费| 日本人成精品视频在线| 亚洲第一区在线观看| 欧美日韩在线另类| 亚洲石原莉奈一区二区在线观看| 日韩男女性生活视频| 亚洲激情电影中文字幕| 国产精品日韩欧美综合| 久久精品成人一区二区三区| 青草成人免费视频| 国产精品27p| 中文字幕亚洲专区| 中文字幕av一区中文字幕天堂| 日韩最新免费不卡| 在线观看中文字幕亚洲| 久久久久一本一区二区青青蜜月| 久久久91精品国产一区不卡| 国产精品久久久久久久久免费| 亚洲精品久久久久中文字幕二区| 久久精品视频网站| 久久久久成人精品| 亚洲欧美色婷婷| 久久久久久久久久久久av| 蜜臀久久99精品久久久无需会员| 国产精品444| 91亚洲国产成人久久精品网站| 欧美亚洲一级片| 亚洲美女黄色片| 亚洲一区二区三区乱码aⅴ蜜桃女| 亚洲性夜色噜噜噜7777| 国产精品久久久久久久久久99| 色一情一乱一区二区| 欧美性猛交xxxx乱大交3| 亚洲最大福利视频网| 日韩高清电影好看的电视剧电影| 96pao国产成视频永久免费| 色综合导航网站| 日日狠狠久久偷偷四色综合免费| 国产精品永久免费在线| 欧美洲成人男女午夜视频| 美女视频黄免费的亚洲男人天堂| 久久国产一区二区三区| 91在线观看免费高清| 韩国19禁主播vip福利视频| 在线丨暗呦小u女国产精品| 91经典在线视频| 国产精品永久在线| 国产91色在线|| 7m第一福利500精品视频| 国内精品400部情侣激情| 国产精品视频地址| 红桃视频成人在线观看| www高清在线视频日韩欧美| 日本高清不卡的在线| 欧美天堂在线观看| 日韩成人在线免费观看|