Подтвердить что ты не робот

Возможно ли использовать фреймворки и бегуны на основе Python на основе Unit Test для тестирования кода C

Основанные на Python Unit test Рамки, такие как "нос", имеют множество богатых функций, мне интересно, можем ли мы использовать их для тестирования кода C.

4b9b3361

Ответ 1

Конечно, вы можете... но вам придется написать привязку, чтобы вызвать ваш код 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:)