Можно ли использовать основанные на Python фреймворки и бегуны модульного тестирования для тестирования кода C - PullRequest
12 голосов
/ 04 октября 2011

Модульный тест на основе Python Фреймворки типа «носа» обладают множеством богатых функций, и мне интересно, сможем ли мы использовать их для тестирования С-кода.

1 Ответ

14 голосов
/ 04 октября 2011

Конечно, вы можете .... но вам придется написать привязку для вызова вашего кода C на python (например, с ctypes ) и написать тесты на python (это действительновозможный и простой способ сделать умные тесты)

Пример:

  • Написать фиктивную библиотеку C.

foolib.c

int my_sum(int , int);

int my_sum(int a , int b);
{
    return a + b;
}
  • Скомпилируйте его как общую библиотеку:

gcc -shared -Wl,-soname,foolib -o foolib.so -fPIC foolib.c

  • Напишите оболочкус ctypes:

foolib_test.py

import ctypes
import unittest

class FooLibTestCase(unittest.TestCase):
    def setUp(self):
        self.foolib = ctypes.CDLL('/full/path/to/foolib.so')

    def test_01a(self):
        """ Test in an easy way"""
        self.failUnlessEqual(4, foolib.my_sum(2, 2))

И затем, при запуске этого теста с носом у вас должен быть хороший тест вашего кода C:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...