elopio | thomi, veebers: I have a customproxyobject that has a slow_drag method in it. I want to test the number of times that drag method was called. | 00:00 |
---|---|---|
elopio | I can't use mock to count the number of time drag was called, because that would do nothing instead of dragging. | 00:02 |
elopio | and I can't make a test class that inherits from my customproxyobject class and counts the number of times drag was called, because I won't be able to use it on select_single | 00:02 |
elopio | I'm out of ideas, but I might be missing some simple and straight-forward way to do it. | 00:04 |
elopio | thomi, veebers: how would you do it? | 00:04 |
veebers | elopio: hmm, I'm just checking a couple of ideas out. My first suggestion was super gross so I didn't even type it out :-) | 00:05 |
thomi | elopio: a decorator? | 00:05 |
veebers | I'm sure you acn do it thought, just pondering it | 00:05 |
thomi | elopio: make a decorator that counts calls | 00:05 |
veebers | thomi: aye, that's what I was thinking, wrap the call and have it count | 00:05 |
elopio | thomi, veebers: but then it will count always. Not just for my test. | 00:06 |
thomi | elopio: hmmm | 00:06 |
veebers | could you have something like: with MethodCaller(object) as smoething:\n\n print something['method_'name'] => 12 | 00:07 |
thomi | veebers: but that only works if he controls the call site | 00:08 |
thomi | elopio: make your custom proxy class count the calls only when it's been enabled with a context manager | 00:08 |
thomi | so you'd do: | 00:08 |
elopio | I didn't get that. | 00:08 |
thomi | with my_custom_proxy_class_instance.count_calls(): | 00:08 |
thomi | # test code | 00:08 |
thomi | assert my_custom_proxy_class_instance.call_count == 12 | 00:08 |
elopio | I mean, the methodcaller solution. | 00:08 |
elopio | thomi: ok, I don't like that, but I guess I'll go with it. | 00:10 |
thomi | elopio: it's quite an unusual requirement | 00:10 |
elopio | my ideal solution was something like mock.patch(CustomProxyObj, 'slow_drag'), so I didn't have to touch the original class | 00:11 |
elopio | but instead of patching it with a mock, it keeps the same slow_drag implementation but records the call_count. | 00:12 |
thomi | elopio: why do you want this? There's probably a better way | 00:12 |
thomi | counting the number of calls seems like you're testing the wrong thing TBH | 00:12 |
elopio | I'll propose it to mfoord, charge a cent for everybody who uses it, and then I will earn one cent. | 00:12 |
elopio | thomi: on the qquicklistviews we have to drag the list many times in order to find items, right? | 00:13 |
elopio | I'm now working with circular lists | 00:13 |
elopio | if we drag too fast, we skip some items | 00:13 |
elopio | but as it's circular, we might end up spinning many times until by mere chance we make visible the item we were looking for. | 00:14 |
thomi | heh | 00:14 |
elopio | I want a test that verifies that we are spinning only the expected number of times. | 00:14 |
elopio | thomi: but you might be right. It could be that I'm too involved in the current solution that I can't think of an alternate test for this. | 00:15 |
elopio | let me know if you have one in mind. | 00:15 |
thomi | I think I'd do it based on the visible contents perhaps? | 00:15 |
elopio | ok, that could work. | 00:16 |
elopio | check what's the current selected index. | 00:16 |
elopio | drag once. | 00:16 |
elopio | check that the selected index is now the old one + 1 | 00:16 |
elopio | it's a little harder when the drag is for more than one item at a time, because the toolkit doesn't tell you properly the numer of visible items. But that's a problem for later. | 00:18 |
elopio | thomi, veebers: thanks! looks better now. | 00:26 |
* elopio goes to the gym to become big and strong. | 00:26 | |
thomi | elopio: uhh, no worries. | 00:27 |
thomi | didn't realyl do much to help :) | 00:27 |
chess | in Your first Autopilot test, I am unable to install libautopilot-qt python-autopilot | 07:42 |
Generated by irclog2html.py 2.7 by Marius Gedminas - find it at mg.pov.lt!