Testing a Controller in a while loopUnit-testing a controller in Ruby on RailsDoubts about the quality of an API designed for use with minimal effortTwo dimensional unit testingFile validation and unit testingRooms and trapdoors - for-loop and while-loop efficiencyTesting Out TestingPython unit testing for a Stack data structureTesting controller class using mockito mvcPython simple Class with sqlite and unit testingUnit Testing for Spring Controller
Isometric embedding of a genus g surface
What the heck is gets(stdin) on site coderbyte?
Why the "ls" command is showing the permissions of files in a FAT32 partition?
What does "tick" mean in this sentence?
Given this phrasing in the lease, when should I pay my rent?
Why can't the Brexit deadlock in the UK parliament be solved with a plurality vote?
How to get directions in deep space?
How do I prevent inappropriate ads from appearing in my game?
What should be the ideal length of sentences in a blog post for ease of reading?
Mimic lecturing on blackboard, facing audience
Origin of pigs as a species
Limit max CPU usage SQL SERVER with WSRM
Why is the principal energy of an electron lower for excited electrons in a higher energy state?
Why is the sun approximated as a black body at ~ 5800 K?
Can I run 125kHz RF circuit on a breadboard?
Proving an identity involving cross products and coplanar vectors
Alignment of six matrices
Did I make a mistake by ccing email to boss to others?
Quoting Keynes in a lecture
Overlapping circles covering polygon
What's the name of the logical fallacy where a debater extends a statement far beyond the original statement to make it true?
Telemetry for feature health
Do I have to know the General Relativity theory to understand the concept of inertial frame?
How can I, as DM, avoid the Conga Line of Death occurring when implementing some form of flanking rule?
Testing a Controller in a while loop
Unit-testing a controller in Ruby on RailsDoubts about the quality of an API designed for use with minimal effortTwo dimensional unit testingFile validation and unit testingRooms and trapdoors - for-loop and while-loop efficiencyTesting Out TestingPython unit testing for a Stack data structureTesting controller class using mockito mvcPython simple Class with sqlite and unit testingUnit Testing for Spring Controller
$begingroup$
I would like to see suggestions if my code could be more improved. In my controller I have a line:
self.bool_value = False # for testing
which in my opinion should not be there, because I put it there only for testing purposes, but I did not find any way around. In addition I would like to know whether you guys test the __init__
method as well, because I see no point in it. And another question would be, if you guys would test if the parameter req
was called in the execute method. Any other suggestions to improve this code are welcomed.
My Controller looks like this:
from typing import Callable
from source.controller.RequestModel import RequestModel
from source.boundaries.AbstractInputBoundary import AbstractInputBoundary
class Controller:
abstractInputBoundary: AbstractInputBoundary
bool_function: Callable[[bool], bool]
bool_value: bool
def __init__(self, abstract_input_boundary, bool_function=lambda _: True):
self.abstractInputBoundary = abstract_input_boundary
self.bool_function = bool_function
self.bool_value = True
def process_input(self) -> None:
"""
Waits for the input of the User in order to call a usecase
:rtype: None
"""
while self.bool_function(self.bool_value):
self.bool_value = False # for testing
inp: str = input()
if inp == "show data":
req = RequestModel()
req.setRequest(inp)
self.abstractInputBoundary.execute(req)
My Test looks like the following:
import unittest
from source.controller.Controller import Controller
from unittest.mock import patch
from unittest.mock import MagicMock
class TestController(unittest.TestCase):
def test_process_input(self):
"""
This tests, whether after the input "show data" in the controller object a boundary object is called
"""
def switch_function(switch_bool):
if switch_bool is True:
return True
else:
return False
with patch('builtins.input') as inp:
inp.return_value = "show data"
boundary = MagicMock()
boundary.execute = MagicMock()
controller = Controller(boundary, switch_function)
controller.process_input()
assert boundary.execute.called
python python-3.x unit-testing
$endgroup$
add a comment |
$begingroup$
I would like to see suggestions if my code could be more improved. In my controller I have a line:
self.bool_value = False # for testing
which in my opinion should not be there, because I put it there only for testing purposes, but I did not find any way around. In addition I would like to know whether you guys test the __init__
method as well, because I see no point in it. And another question would be, if you guys would test if the parameter req
was called in the execute method. Any other suggestions to improve this code are welcomed.
My Controller looks like this:
from typing import Callable
from source.controller.RequestModel import RequestModel
from source.boundaries.AbstractInputBoundary import AbstractInputBoundary
class Controller:
abstractInputBoundary: AbstractInputBoundary
bool_function: Callable[[bool], bool]
bool_value: bool
def __init__(self, abstract_input_boundary, bool_function=lambda _: True):
self.abstractInputBoundary = abstract_input_boundary
self.bool_function = bool_function
self.bool_value = True
def process_input(self) -> None:
"""
Waits for the input of the User in order to call a usecase
:rtype: None
"""
while self.bool_function(self.bool_value):
self.bool_value = False # for testing
inp: str = input()
if inp == "show data":
req = RequestModel()
req.setRequest(inp)
self.abstractInputBoundary.execute(req)
My Test looks like the following:
import unittest
from source.controller.Controller import Controller
from unittest.mock import patch
from unittest.mock import MagicMock
class TestController(unittest.TestCase):
def test_process_input(self):
"""
This tests, whether after the input "show data" in the controller object a boundary object is called
"""
def switch_function(switch_bool):
if switch_bool is True:
return True
else:
return False
with patch('builtins.input') as inp:
inp.return_value = "show data"
boundary = MagicMock()
boundary.execute = MagicMock()
controller = Controller(boundary, switch_function)
controller.process_input()
assert boundary.execute.called
python python-3.x unit-testing
$endgroup$
add a comment |
$begingroup$
I would like to see suggestions if my code could be more improved. In my controller I have a line:
self.bool_value = False # for testing
which in my opinion should not be there, because I put it there only for testing purposes, but I did not find any way around. In addition I would like to know whether you guys test the __init__
method as well, because I see no point in it. And another question would be, if you guys would test if the parameter req
was called in the execute method. Any other suggestions to improve this code are welcomed.
My Controller looks like this:
from typing import Callable
from source.controller.RequestModel import RequestModel
from source.boundaries.AbstractInputBoundary import AbstractInputBoundary
class Controller:
abstractInputBoundary: AbstractInputBoundary
bool_function: Callable[[bool], bool]
bool_value: bool
def __init__(self, abstract_input_boundary, bool_function=lambda _: True):
self.abstractInputBoundary = abstract_input_boundary
self.bool_function = bool_function
self.bool_value = True
def process_input(self) -> None:
"""
Waits for the input of the User in order to call a usecase
:rtype: None
"""
while self.bool_function(self.bool_value):
self.bool_value = False # for testing
inp: str = input()
if inp == "show data":
req = RequestModel()
req.setRequest(inp)
self.abstractInputBoundary.execute(req)
My Test looks like the following:
import unittest
from source.controller.Controller import Controller
from unittest.mock import patch
from unittest.mock import MagicMock
class TestController(unittest.TestCase):
def test_process_input(self):
"""
This tests, whether after the input "show data" in the controller object a boundary object is called
"""
def switch_function(switch_bool):
if switch_bool is True:
return True
else:
return False
with patch('builtins.input') as inp:
inp.return_value = "show data"
boundary = MagicMock()
boundary.execute = MagicMock()
controller = Controller(boundary, switch_function)
controller.process_input()
assert boundary.execute.called
python python-3.x unit-testing
$endgroup$
I would like to see suggestions if my code could be more improved. In my controller I have a line:
self.bool_value = False # for testing
which in my opinion should not be there, because I put it there only for testing purposes, but I did not find any way around. In addition I would like to know whether you guys test the __init__
method as well, because I see no point in it. And another question would be, if you guys would test if the parameter req
was called in the execute method. Any other suggestions to improve this code are welcomed.
My Controller looks like this:
from typing import Callable
from source.controller.RequestModel import RequestModel
from source.boundaries.AbstractInputBoundary import AbstractInputBoundary
class Controller:
abstractInputBoundary: AbstractInputBoundary
bool_function: Callable[[bool], bool]
bool_value: bool
def __init__(self, abstract_input_boundary, bool_function=lambda _: True):
self.abstractInputBoundary = abstract_input_boundary
self.bool_function = bool_function
self.bool_value = True
def process_input(self) -> None:
"""
Waits for the input of the User in order to call a usecase
:rtype: None
"""
while self.bool_function(self.bool_value):
self.bool_value = False # for testing
inp: str = input()
if inp == "show data":
req = RequestModel()
req.setRequest(inp)
self.abstractInputBoundary.execute(req)
My Test looks like the following:
import unittest
from source.controller.Controller import Controller
from unittest.mock import patch
from unittest.mock import MagicMock
class TestController(unittest.TestCase):
def test_process_input(self):
"""
This tests, whether after the input "show data" in the controller object a boundary object is called
"""
def switch_function(switch_bool):
if switch_bool is True:
return True
else:
return False
with patch('builtins.input') as inp:
inp.return_value = "show data"
boundary = MagicMock()
boundary.execute = MagicMock()
controller = Controller(boundary, switch_function)
controller.process_input()
assert boundary.execute.called
python python-3.x unit-testing
python python-3.x unit-testing
edited 16 mins ago
Jamal♦
30.4k11121227
30.4k11121227
asked Mar 6 at 1:53
davidh38davidh38
42
42
add a comment |
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function ()
return StackExchange.using("mathjaxEditing", function ()
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix)
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["\$", "\$"]]);
);
);
, "mathjax-editing");
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "196"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e)
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom))
StackExchange.using('gps', function() StackExchange.gps.track('embedded_signup_form.view', location: 'question_page' ); );
$window.unbind('scroll', onScroll);
;
$window.on('scroll', onScroll);
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f214808%2ftesting-a-controller-in-a-while-loop%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Code Review Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
Use MathJax to format equations. MathJax reference.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e)
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom))
StackExchange.using('gps', function() StackExchange.gps.track('embedded_signup_form.view', location: 'question_page' ); );
$window.unbind('scroll', onScroll);
;
$window.on('scroll', onScroll);
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f214808%2ftesting-a-controller-in-a-while-loop%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e)
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom))
StackExchange.using('gps', function() StackExchange.gps.track('embedded_signup_form.view', location: 'question_page' ); );
$window.unbind('scroll', onScroll);
;
$window.on('scroll', onScroll);
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e)
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom))
StackExchange.using('gps', function() StackExchange.gps.track('embedded_signup_form.view', location: 'question_page' ); );
$window.unbind('scroll', onScroll);
;
$window.on('scroll', onScroll);
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
var $window = $(window),
onScroll = function(e)
var $elem = $('.new-login-left'),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $elem.offset().top,
elemBottom = elemTop + $elem.height();
if ((docViewTop elemBottom))
StackExchange.using('gps', function() StackExchange.gps.track('embedded_signup_form.view', location: 'question_page' ); );
$window.unbind('scroll', onScroll);
;
$window.on('scroll', onScroll);
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown