Boost logo

Boost Users :

Subject: Re: [Boost-users] [UTF] Accessing global fixture members within tests
From: Simon Pickles (sipickles_at_[hidden])
Date: 2010-01-02 11:14:04


Simon Pickles wrote:
> Hi
>
> I am using the Unit Test Framework to test my use of boost.python. I
> am using a global fixture to initialize the python intepreter a single
> time (rather than before each test).
>
> My problem is I would like to use the Python initialising class in my
> tests, and I can't figure out how to do this. I don't want to use
> normal fixtures since each test would call initialize the interpreter,
> causing problems.
>
> Here is what I want to do:
>
> //////////////////////////////////////////////////////
> #include <boost//python.hpp>
> #include <boost//test//unit_test.hpp>
>
> #include "..//pythonManager//pythonManager.h"
>
> using namespace boost;
>
> // First make a global fixture which sets up python interpreter
> struct PythonManagerFixture
> {
> PythonManagerFixture()
> {
> pm.Init();
> }
> PythonManager pm;
> };
>
> // Set up suite
> BOOST_AUTO_TEST_SUITE(TestPythonManager)
>
> // Only init python interpreter once
> BOOST_GLOBAL_FIXTURE(PythonManagerFixture);
>
> BOOST_AUTO_TEST_CASE(TestInit)
> {
> // Get python globals dict
> python::dict globalDict =
> python::extract<python::dict>(pm.m_pyGlobals); // COMPILE ERROR 'pm' :
> undeclared identifier
> // Has logging module been imported?
> BOOST_REQUIRE(globalDict.has_key("logging"));
> }
>
> BOOST_FIXTURE_TEST_CASE(TestLogCallback, PythonManagerFixture) //
> RUNTIME ERROR pm.Init called a second time - bad
> {
> function<void(const string&, const string&)> f =
> pm.GetLogFunction(); // pm is in scope though....
> BOOST_REQUIRE(f);
> }
>
> // End the suite
> BOOST_AUTO_TEST_SUITE_END()
> ///////////////////////////////////////////////////////////////////
>
> I need a way to supply the PythonManager instance, pm, to the test cases.
>
> Thanks for any advice
>
> Simon
>
Ah, I needed the subtle distinction of a BOOST_FIXTURE_TEST_SUITE, not a
BOOST_FIXTURE_TEST_CASE


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net