使用Codeception

时间:2016-02-05 20:46:30

标签: php csv codeception

我正在编写一个小脚本来解析CSV信息并将其存储在数据库中。 我没有使用任何框架,因为这是一个小项目,但我使用Codeception来测试我的代码。

我的Parser类基本上是从CSV文件中解析数据,处理数据(将它更整齐地放入数组中)并插入数据。

以下是插入数据的方法:

public function insertCategories() {
    // prepare statement
    codecept_debug("entering insertCategories");
    $stmt = $this->dbo->prepare("INSERT INTO `cs_menucategory` (`catid`, `menugroupid`, `categoryname`) VALUES (:catid, :menugroupid, :categoryname)");

    // prepare parameters
    $cats = $this->result['Category'];
    for ($i = 0; $i < count($cats); $i++) {
        $params = array();
        $params['menugroupid'] = $i+1;
        $params['catid'] = $i+1;
        $params['categoryname'] = $cats[$i];

        // execute statement
        $stmt->execute($params);
    }
}

我还使用Codeception为这个方法编写了一个简单的单元测试:

class Test extends \PHPUnit_Framework_TestCase {

    protected function setUp() {}

    protected function tearDown() {}

    // tests
    public function test() {
        $parser = new Parser();
        $parser->run(); 
    }
}

在哪个方法中运行

public function run() {
    $this->createResultArrays();
    $this->getCSVData();

    $this->connectDtb();

    $this->processData();
    $this->insertCategories();
}

当我运行此测试并在我的数据库中检查时,所有数据都导入两次。 然后我试着查看该方法是否被多次调用,或者是否通过简单地打印出状态'flags'来导致问题,但两者都不是这样。

然而,一旦我尝试了PHP交互模式,代码工作正常,所有数据都被导入一次并且正确。

所以我在调试模式下再次运行测试,这是返回的内容:

    Vy-Huynhs:MenuDrive VyHuynh$ ./vendor/bin/codecept run unit Test --debug
    Codeception PHP Testing Framework v2.1.5
    Powered by PHPUnit 4.8.22 by Sebastian Bergmann and contributors.

      Group 'failed' is empty, no tests are loaded
      entering insertCategories

    Unit Tests (1) ------------------------------
    Modules: Asserts, \Helper\Unit
    ---------------------------------------------
    Running Test::test... 
      entering insertCategories
    Test::test                             Ok
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ---------------------------------------------


    Time: 225 ms, Memory: 9.50Mb

    OK (1 test, 0 assertions)
    Vy-Huynhs:MenuDrive VyHuynh$ 

我怀疑这是造成错误的原因:

  

组'失败'为空,未加载任何测试

可能有一些我没做错的Codeception配置。

以下是CSV文件的内容:

Group,Category,Item 
Main Menu,Appetizers,Buffalo Wings 
,,Chicken Fingers 
,,French Fries 
,Salad,Caesar Salad 
,,House Salad 
Breakfast Menu,Sandwiches,BLT 
,Drinks,Coffee 
,,Tea 

并且此脚本尝试从“类别”列导入数据。

谢谢大家。

0 个答案:

没有答案