本文目录一览:
php如何进行单元测试
何为单元测试:
指对软件中的基本单元进行测试,如函数、方法等,以检查其返回值或行为是否符合预期;实际中软件是很复杂的,由许多组件构成,执行流程连贯在一起,要进行单元片段的测试,就需要为其提供执行上下文(或者说参数)和环境(比如打桩模拟一些对象)来运行,并监控其行为和返回值,为此我们就需要写出做这件事情的程序代码,这样的代码叫做测试用例。
许多测试用例有机结合在一起形成一个整体的测试,又叫做测试套件,被测试的程序代码叫做生产代码。phpunit这个软件就是用来帮助我们写测试用例并进行测试的。
php的单元测试:phpunit
在其官网有详细教程,这里介绍一些补充内容。
首先要明白phpunit软件本身就是由php语言实现,其使用是通过命令行进行的,并不是通过浏览器访问
明白这一点很重要,许多新人被卡在这里,很基础也很简单,但似乎没怎么被提及。
在官网下载后得到一个phar文件,同时下载phpunit使用文档,按照里面的安装方法进行安装,之后在命令行输入以下命令:
phpunit --help
如果显示出了帮助信息即安装成功,在命令行当前目录下建立一个测试用例为yunke.php,内容如下:
?phpuse PHPUnit\Framework\TestCase;class yunkeTest extends TestCase{public function testPushAndPop(){$stack = [];$this-assertEquals(0, count($stack));array_push($stack, 'foo');$this-assertEquals('foo', $stack[count($stack) - 1]);$this-assertEquals(1, count($stack));$this-assertEquals('foo', array_pop($stack));$this-assertEquals(0, count($stack));}}?-php的测试代码怎么写
然后在命令行输入以下命令:
phpunit yunke
显示如下内容:
PHPUnit 5.7.12 by Sebastian Bergmann and contributors.. 1 / 1 (100%)Time: 159 ms, Memory: 7.00MBOK (1 test, 5 assertions)-php的测试代码怎么写
恭喜,你已经成功运行了一个单元测试。
我下载了APACHE要测试PHP代码,需要怎么用?
建立一个phpinfo.php
放到你apache指向的目录。再把
?php
phpinfo();?
这小段放到文件里,直接在你的apache下运行就行。
一段php代码该怎么写
根据你的描述,好像是显示产品的一个格式,$a, $id,$num,$money分别是对应各个产品的属性,$count则是计算所有产品的总价值,那么php代码可以这样写:
?php
$a = explode('|', '610|629');
$id = explode('|', '3171|2486');
$num = explode('|', '8|5');
$money = explode('|', '1|1');
$count = 0;
$totalNum = count($a);
echo count($a) . "br";
$str = "{";
for ($i = 0; $i $totalNum; $i++) {
/*
$str .= '\"';
$str .= $a[$i];
$str .= '\":{\"id\":';
$str .= $id[$i];
$str .= ',';
$str .= '\"num\":';
$str .= $num[$i];
$str .= ',\"money\":';
$str .= $money[$i];
$str .= '},';
*/
$str .= sprintf('\"%d\":{\"id\":%d,\"num\":%d,\"money\":%d},', $a[$i], $id[$i], $num[$i], $money[$i]);-php的测试代码怎么写
$count += ($num[$i] * $money[$i]);
}
$str .= '\"Count\":';
$str .= $count;
$str .= '}';
echo $str;
thinkphp怎么用phpunit写测试用例
测试用例
本例中,根目录的index.php的配置如下:
?php
define('APP_NAME', 'example');
define('APP_PATH', '../example/');
define('APP_PHPUNIT', false);
define('APP_DEBUG', true);
require('../ThinkPHP/ThinkPHP.php');
?
首次访问之后,生成以下目录结构:
在example站点中新建文件夹,命名为“Testcase”。
测试Model
创建HelloModel.class.php:
?php
class HelloModel extends Model
{
public function sayHello()
{
print 'Hello';
return 'Hello';
}
}
在Test文件夹中新建Test.php文件作为PHPUnit,其中注意require ThinkPHP作为初始化框架环境,另外在Think.class.php中,修改
start()函数中,App::run()为 !APP_PHPUNIT App::run();
该区分站点运行与测试用例。
?php
define('APP_NAME', 'example');
define('APP_PATH', './../../example/');
define('APP_PHPUNIT', true);
require('./../../ThinkPHP/ThinkPHP.php');
class TestSayHello extends PHPUnit_Framework_TestCase {
public function setUp() { }
public function tearDown(){ }
}
在TestSayHello中加入测试用例:
public function testHelloModel()
{
$hello = D('Hello');
$this-assertTrue( $hello-sayHello('Hello') == 'Hello');
}
测试Action
修改IndexAction.class.php如下:
?php
class IndexAction extends Action
{
public function index()
{
$hello = D("Hello");
return $hello-sayHello();
}
}
浏览器访问Index效果:
在TestSayHello中加入测试用例:
public function testHelloAction()
{
$hello = new IndexAction();
$this-assertTrue($hello-index() == 'Hello');
}
运行效果
运行Test.php效果如下:
Test通过,至此给ThinkPHP加上了单元测试。